|
|
|
|
<td width="200" valign="middle"><strong>Общежитие:</strong></td>
<td>
<p><input type="radio" name="hostel" value="1" />Есть</p>
<p><input type="radio" name="hostel" value="2" />Нет</p>
</td>
|
в обработчике проверяю
if (isset($_POST['hostel']))
{$hostel = $_POST['hostel']; if ($hostel == '') {unset ($hostel);}}
if($hostel == 1){$hostel = 'есть';}
else{$hostel = 'нет';}
|
потом вставляю в БД
Работает то оно работает, но все ли верно?
И полю hostel дал значение varchar(4) - записывается "Есть" и "нет". | |
|
|
|
|
|
|
|
для: liberty
(26.05.2013 в 09:47)
| |
if (isset($_POST['hostel']))
{$hostel = $_POST['hostel']; if ($hostel == '') {unset ($hostel);}}
if($hostel == 1){$hostel = 'есть';}
else{$hostel = 'нет';}
|
Это всё одной строчкой можно сделать
$hostel = ($_POST['hostel'] == 1) ? 'есть' : 'нет';
|
| |
|
|
|
|
|
|
|
для: DangerBay
(26.05.2013 в 10:13)
| | Нет, если переменная не определена, будет предупреждение, к тому же не понятно, что в данном случае принять в качестве значения.. | |
|
|
|
|
|
|
|
для: confirm
(26.05.2013 в 10:19)
| | "нет" запишет в любом случае, но добавить
if(isset($_POST['hostel']))
| не мешает.
или одной строчкой
$hostel = isset($_POST['hostel']) ? (($_POST['hostel'] == 1) ? 'есть' : 'нет') : NULL;
|
И полю hostel дал значение varchar(4) - записывается "Есть" и "нет".
|
правильней сделать поле ENUM("есть", "нет") | |
|
|
|
|
|
|
|
для: DangerBay
(26.05.2013 в 10:33)
| | В том то и дело, что запишет непонятно что. Дело не в ENUM, может выгоднее и в BOOLEAN, просто в таких случаях должно быть указано значение по умолчанию, которое и должно устанавливаться в случае отсутствия выбора, или уже выбрано по умолчанию.
Иначе все догадки и не отражает действительности. | |
|
|
|
|
|
|
|
для: confirm
(26.05.2013 в 11:06)
| | NULL заменить на значение по умолчанию, в данном случае "нет".
Вообще-то если поле обязательное, и оно не введено, то до этой части скрипта доходить не должно, поэтому мой первый вариант был даже без isset - это всё нужно сначала проверять и выводить ошибки при необходимости, только потом обрабатывать данные. Необязательным полям выставлять значения по умолчанию при добавлении в БД, если не нужно пустое значение | |
|
|
|
|
|
|
|
для: DangerBay
(26.05.2013 в 13:26)
| | if (isset($_POST['hostel'])) {$hostel = $_POST['hostel']; if ($hostel == '') {unset ($hostel);}}...
Если написать это человечески, а не таким бедламом, например, по вашему, то что делать если не установлена? У вас тоже на это вопрос нет ответа, у вас вообще этот фактор почему-то не учитывается.
Не известно чего вообще нужно, но если после проверки установлено или нет, просто раздается значение "да"/"нет", то логика просто обязывает иметь третье значение - значение по умолчанию. Но при значениях "да"/"нет" встает вопрос - имеет ли место быть для некоторого действия, свойства и т.п., третье значение и "ни да", и "ни нет"?
Вот чего нет ни у автора, ни у вас - ответа на этот вопрос. | |
|
|
|
|
|
|
|
для: confirm
(26.05.2013 в 14:22)
| | ничего не понял.
гд еошибка?
и какое поле лучше присвоить? сейчас varchar | |
|
|
|
|
|
|
|
для: liberty
(26.05.2013 в 19:02)
| | А никто не говорит об ошибке, есть несуразица. У вас код примерно такое делает:
- Покрасить забор в белый цвет?
Если получили ответ "Да" - красим в белый.
Если получили ответ "Нет" - не красим в белый.
А что делать, если ответ не получен? Красить в белый, не красить в белый, красить в какой угодно цвет или не красить вообще?
Для того чтобы маляра не ставить в трудное положение, он должен знать действие по умолчанию - если не получен ответ, значит красим в белый цвет или спать.
В вашем случае одно из значений "Да"/"Нет" должно быть выбрано по умолчанию и указываться как в базе, так и при выводе радиокнопок - если выбора не было, значит кнопке по умолчанию атрибут checked. В этом случае, если форма не присылает кнопку, значит форма липовая. Либо, если подразумевается действие и в случае отсутствия какого либо выбора, то должно быть и третье значение, которое и будет по умолчанию.
Что же вам нужно на самом деле, я не знаю. Что касается varchar, то выше уже упоминалось, что такие данные лучше хранить в полях ENUM, а возможно более выгоднее и в BOOLEAN (TINYINT) 0, 1. | |
|
|
|
|
|
|
|
для: confirm
(27.05.2013 в 07:42)
| | если ENUM - то какое значение ставить для Length/Values ?
выходит надпись ENUM or SET data too long? Get more editing space
а какое значение выбрать для BOOLEAN?
для TINYINT?
что касается ваших размышлений. то пользвователь может проигнорировать и не выбрать "- Покрасить забор в белый цвет?" - и тогда мы ничего не выводим. и ни да и ни нет. | |
|
|
|
|
|
|
|
для: liberty
(27.05.2013 в 08:48)
| | >что касается ваших размышлений. то пользвователь может проигнорировать и не выбрать "- Покрасить забор в белый цвет?" - и тогда мы ничего не выводим. и ни да и ни нет.
Ну так в вашем коде нет ответа на это случай, у вас непонятные действия, как то unset ($hostel) непонятное к чему.
Вы знаете, что такое системы счисления, и какая из них применяется в вычислительных машинах? А если знаете, то должны знать, что в двоичной системе каждый разряд может принимать только два значение - 0 и 1. То есть, один разряд двоичной системы может хранить информацию только о двух состояниях некоего объекта, или только два значения некоего свойства.
А "да", "нет" и "не принято" - это уже три состояния, три значения, и для их хранения одного двоичного разряда мало. Это к тому, что если при "не принято" вообще ничего не делать, еще ладно (хотя это предполагает третье действие, действие по умолчанию, чего у вас нет), но если это хранить, значит поле для этого хранения должно хранить три состояния - по умолчанию, и одно из выбранных.
Боюсь, что смысл этого до вас вообще не доходит.
BOOLEAN, это синоним TUNYINT. Но в отличие от BOOLEAN, которое может интерпретировать только два состояния: 0 - ложь, 1 - истина, TINYINT может хранить и три, и более состояния: 0 - нет действия, 1- действие А, 2 - действие В...
Что лучше - BOOLEAN, TINYINT или ENUM? Ни что. Выбор зависит от того, чем эти данные являются, и если они служат для выбора в сложных запросах, да и не сложных тоже, если их масса, то лучше все таки BOOLEAN, TINYINT (с учетом числа состояний), так как для чисел не требуется преобразований, а значит и поиск/выбор по ним происходит быстрее. Вывести же вместо 0, 1 нечто удобоваримое, так это просто:
<?
echo $row['choice'] ? 'Да' : 'Нет';
|
| |
|
|
|
|
|
|
|
для: confirm
(27.05.2013 в 09:39)
| | confirm спасибо.
но хотелось бы увидеть и вашу редакцию.
как бы выглядел ваш код? | |
|
|
|
|
|
|
|
для: liberty
(27.05.2013 в 18:43)
| | А разве соль в том как будет выглядеть мое решение или кого либо другого? Вам уже показывал решение DangerBay, правда первое предполагает именно наличие значения по умолчанию, и обязательной установки выбора по умолчанию в форме.
Вы так и не поняли сути того, в чем у вас затыка. Даже невозможно представить, что за значение может быть, которое и ни да, и ни нет. Вот я себе такого не представляю. А это Х-значение напрашивается у вас потому, что вы да/нет устанавливаете только после обязательного выбора. Несуразица полнейшая.
Если у вас типа есть черное, а вы предлагаете выбрать красное или синее, тогда все нормально, но почему вы не храните черного?
Если ваши радиокнопки (ваше да/нет), это например, выбор пользователя "получать или/нет" на почту информацию о новостях на сайте, то с какого перепугу вы проверяете "если пришло, то узнать да или нет"? В таких случаях значение 0 в базе, это значение по умолчанию (нет). А форма должна содержать не две радиокнопки (да/нет), а один чекбокс, который отображает текущее состояние выбора - если в базе 1, значит чебокс выбран, если 0, значит нет. Соответственно, отмечая чекбокс, пользователь желает получать новости, а снимая отметку с него - более не хочет получать их.
А весь код, это проверка - если установлен чекбокс (пришел с формой), значит записать в базу 1, если нет (отсутствует при приеме формы),значит пишем базу 0. Вот и весь код, который выражается одной строкой, которую вам уже представляли, сантаксис которой вы должны уже и сами давно знать.
Чего вам надо на самом деле, я не в курсе, но то что вы пишите, это полная несуразица, а вы этого даже и не понимаете. | |
|
|
|
|
|
|
|
для: confirm
(27.05.2013 в 19:08)
| | запутался.
выбор простой.
пользователь должен выбрать.
если есть у него общага - то "да"
если "нет" - то нет.
его выбор записыавется в БД.
если он ничего не выбирает - то в базу ничего не записывается.
вы проще напишите. как вы бы сделали и код приложите ))) | |
|
|
|
|
|
|
|
для: liberty
(27.05.2013 в 21:07)
| | Проще это как - сказать вам как вам нужно? Увы, этого я не могу, не я владелец ваших мозгов, и что вам на самом деле нужно мне не известно.
Если в базу ничего не записывается, то что для вас будет означать отсутствие записи в ней - значит нет общежития, или это открытый вопрос?
Если именно выбор пользователя "нет", это истина, то значит и база должна учитывать три значения: "не выбрано", "не определено", ну или "не известно" - это значение по умолчанию, NULL, и одно из значений выбора: 0 - нет, 1 - да. Значит и при выводе этой информации должны отображаться три возможных значения:
<?
echo $row['choice']===null ? 'не определено' : ($row['choice'] ? 'да' : 'нет')
| Значит и радиокнопки в форме, и проверка на "установлено ли?", это все верно.
Но что означает "то в базу ничего не записывается"? Если ваша форма, это всего две радиокнопки, и запись только этой информации, то все нормально. Но если это малая часть записываемой информации, то это что - отдельный запрос на запись именно этого выбора, если он был? Слишком жирно. Значит ваш код должен определять одно из трех значений для записи - null, 0, 1, и запись в это поле происходит в любом случае, не зависимо от того был выбор или нет. При этом, при проверке принятых данных нужно проверять входит ли выбранное значение в установленный диапазон - min/max((int)var).
Если же отсутствие записи означает тоже самое что и "нет", то NULL, это уже избыточное состояние. Значит база должна хранить всего два значение: 0 - "нет", по умолчанию, и 1 - "да". А форма содержать один чекбокс. В этом случае поступаем так, как я писал ранее. | |
|
|
|
|
|
|
|
для: confirm
(28.05.2013 в 04:50)
| | исправил. теперь по умолчанию - общаги нет.
пользователь теперь не сможет проигнорировать и должен выбрать либо да, либо нет.
<td width="200" valign="middle"><strong>Наличие общежития:</strong></td>
<td>
<p><input type="radio" name="hostel" value="1" />Есть</p>
<p><input type="radio" name="hostel" value="2" checked/>Нет</p>
</td>
|
в обработчике
$hostel = ($_POST['hostel'] == 1) ? 'есть' : 'нет';
|
теперь все верно?
вы писали
>>>>
А форма содержать один чекбокс. В этом случае поступаем так, как я писал ранее.
как один чебокс? сейчас их два?
еще вопрос.
надо ли переменную hostel как-то обрабатывать перед записью в БД?
сейчас
$result = mysql_query ("insert bd SET hostel='$hostel',
|
| |
|
|
|
|
|
|
|
для: liberty
(28.05.2013 в 05:20)
| | Я уже и не знаю как вам объяснять... Вы даже сами не знаете, что вам нужно на самом деле, куда уж мне тогда что либо говорить. Делайте как знаете.
У вас не чекбоксы, у вас радиокнопки, а это большая разница.
Насчет обработки (проверки) я буквально недавно написал. Я уже не в силах что либо объяснять. | |
|
|
|
|
|
|
|
для: confirm
(28.05.2013 в 05:50)
| | все равно спасибо. | |
|
|
|
|
|
|
|
для: liberty
(28.05.2013 в 07:28)
| | Не за что. Просто либо вам не дано программировать, а значит бросайте это занятие, либо учитесь думать. Программа, это то, что описывает задачу - что нужно сделать, какие данные для этого требуются, чем эти данные являются, и только потом алгоритм решения этой задачи на основе этих данных, и условиях, которые могут возникать, или которые задаются.
Вы же не пишите программу, вы спрашиваете здесь об "инструкциях". Вот это что такое?:
исправил. теперь по умолчанию - общаги нет.
пользователь теперь не сможет проигнорировать и должен выбрать либо да, либо нет.
У вас и так ничего не было по умолчанию, вы просто хотели что-то получить, совсем не подозревая о том, что ваше "хочу получить" обязательно должно иметь третье состояние. Вы теперь это же самое делает (вернее хотите делать), опять не понимая что с такой постановкой вопроса, значение по умолчанию должно быть. | |
|
|
|
|
|
|
|
для: confirm
(28.05.2013 в 07:41)
| | эх, не дождусь я вашего кода )))
вы так хорошо пишите, но как хотелось бы увидеть и ваше решение. | |
|
|
|
|
|
|
|
для: liberty
(28.05.2013 в 08:19)
| | А станцевать? Я не пишу инструкций, так как программирование, это "думать" и думать вам, не мне. Нужен код, да пожалуйста, но я не скажу вам, что сделать вот так, потому, что вы сами не представляете как вам надо, а мне тем более это не известно.
Предположим, что я хочу выяснить пьете ли вы пиво. И узнать это можно либо предположением с последующим вашим подтверждением/опровержением, либо только на основе непосредственно вашего ответа. Что из этого выбрать, это зависит от того, что в дальнейшем мы будем отображать.
1) На основе предположения
Я изначально предполагаю, что вы не пьете пива, поэтому в таблицу пишу это значение как по умолчанию: 0 - не пьет.
--
-- Структура таблицы `preferences`
--
CREATE TABLE `preferences` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user` varchar(10) NOT NULL COMMENT 'субъект',
`beer` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0 - не пьет, 1 - пьет',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;
--
-- Дамп данных таблицы `preferences`
--
INSERT INTO `preferences` (`id`, `user`, `beer`) VALUES
(1, 'liberty', 0);
|
Поместил в нее ваш "фэйс" и теперь мне осталось только выяснить истину, и я отправляю вам форму, получаю ответ, и всему миру сообщаю ваши вкусы:
<?
//узнаем результат
if(isset($_POST['user']) && ($id = (int)$_POST['user'])) {
$beer = isset($_POST['beer']) ? 1 : 0;
mysql_query('UPDATE `preferences` SET `beer`='.$beer.' WHERE id='.$id);
}
//сообщаем всем
$q = mysql_query('SELECT user, IF(`beer`, "пьет", "не пьет") beer FROM `preferences` WHERE id=1');
$q = mysql_fetch_assoc($q);
echo $q['user'],' ',$q['beer'],' пиво.';
//определяем состояние формы
$q = mysql_query('SELECT * FROM `preferences` WHERE id=1');
$q = mysql_fetch_assoc($q);
$choice = $q['beer'] ? 'checked' : null;
?>
<form method="post">
<label>Вы пьете пиво? <input type="checkbox" name="beer" <?=$choice?> /></label>
<input type="hidden" name="user" value="1" />
<button>Ответить</button>
</form>
|
Скука, и обстановка в квартире надоела, и эти if, else... Сменим обстановку, а заодно и код новый, по феншую:
<?
//узнаем результат
if(isset($_POST['user']) && ($id = (int)$_POST['user'])) {
$beer = $_POST['beer'] & 1;
mysql_query('UPDATE `preferences` SET `beer`='.$beer.' WHERE id='.$id);
}
//сообщаем всем
$q = mysql_query('SELECT user, IF(`beer`, "пьет", "не пьет") beer FROM `preferences` WHERE id=1');
$q = mysql_fetch_assoc($q);
echo $q['user'],' ',$q['beer'],' пиво.';
//определяем состояние формы
$q = mysql_query('SELECT * FROM `preferences` WHERE id=1');
$q = mysql_fetch_assoc($q);
$choice = $q['beer'] ? 'checked' : null;
?>
<form method="post">
<label>Вы пьете пиво? <input type="checkbox" onclick="this.form.beer.value ^= 1" <?=$choice?> /></label>
<input type="hidden" name="beer" value="<?=$q['beer']?>" />
<input type="hidden" name="user" value="1" />
<button>Ответить</button>
</form>
| результат тот же, но какая-то чакра открылась.
2) Только на основе принятых данных, политкорректный подход
В этом случае предположение может быть не истиной, а значит нечего напраслину наводить на человека:
--
-- Структура таблицы `preferences`
--
CREATE TABLE `preferences` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user` varchar(10) NOT NULL COMMENT 'субъект',
`beer` tinyint(1) DEFAULT NULL COMMENT 'null - не определено, 0 - не пьет, 1 - пьет',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;
--
-- Дамп данных таблицы `preferences`
--
INSERT INTO `preferences` (`id`, `user`, `beer`) VALUES
(1, 'liberty', NULL);
<?
//узнаем результат
if(isset($_POST['user']) && ($id = (int)$_POST['user'])) {
$beer = isset($_POST['beer']) ? (int)$_POST['beer'] & 1 : null;
if($beer!==null) mysql_query('UPDATE `preferences` SET `beer`='.$beer.' WHERE id='.$id);
}
//сообщаем всем
$q = mysql_query('SELECT * FROM `preferences` WHERE id=1');
$q = mysql_fetch_assoc($q);
if($q['beer']===null) echo 'Пьет ли пиво '.$q['user'].' нам не известно';
else echo $q['user'].' '.($q['beer'] ? 'пьет' : 'не пьет').' пиво.';
?>
<form method="post">
Вы пьете пиво? <label><input type="radio" name="beer" value="0" /> нет</label> <label><input type="radio" name="beer" value="1" /> да</label>
<input type="hidden" name="user" value="1" />
<button>Ответить</button>
</form>
|
А) Решения - произвольная выборка из возможных.
В) Я не ставлю во главу какую закарючку мне написать в коде, а сперва то, что за данные я должен хранить, в каком виде, а только потом решаю как мне писать код, по феншую или просто, по настроению.
А вот вы попробуйте ответить - равноценны ли данные в 1) и 2)? Сможете ответить, значит поймете какие вам нужны и как их хранить, числовые, или, если просто строковые, то хорошо ли это, и если плохо, то ENUM или SET нужно? И есть ли необходимость заставлять пользователя обязательно ответить, если один из ответов предполагает "Нет"?
Думайте о том, что решаете, а не бегайте по форуму выспрашивая "а" или "б" написать - опыт дело наживное, главное понимание того, что вы делаете. | |
|
|
|
|
|
|
|
для: confirm
(28.05.2013 в 10:43)
| | вы не поверите. я все еще не знаю ответа.
все решаю вашу задачу. | |
|
|
|
|
|
|
|
для: liberty
(04.06.2013 в 05:28)
| | Ну почему же, верю. | |
|
|
|
|
|
|
|
для: confirm
(04.06.2013 в 11:34)
| | вроде дошло как надо))
сейчас у меня три выбора
<p><input type="radio" name="hostel" value="1" />Есть</p>
<p><input type="radio" name="hostel" value="2" />Нет</p>
<p><input type="radio" name="hostel" value="3" checked/>Не указано</p>
|
как тогда в обработчике переписать
$hostel = ($_POST['hostel'] == 1) ? 'есть' : 'нет';
|
| |
|
|
|
|
|
|
|
для: liberty
(09.06.2013 в 00:12)
| | Уже и не знаю как вам и объяснять.
Не отмеченные элементы формы radio и checkbox на сервер не отправляются. Так зачем вы "наглеете", заставляя пользователя еще и выбирать "Не указано"? Ну неужели если он не выберет ни да, ни нет, а следовательно вы не получите на сервере переменной hostel, нельзя сделать вывод, что выбора не было?
Вы вообще задавались вопросом, что вам необходимо знать - имеете или не имеет общежитие, или же не важно, не знаете этого и бог с ним? Что за информация вам вообще нужна? | |
|
|
|
|
|
|
|
для: confirm
(09.06.2013 в 01:11)
| | пользователь иммет право знать есть ли у вуза общежитие.
итак представитель вуза вносит изменения в свои данные.
в разделе общежитие - если оно есть - выбирает "есть"
если нет - то "нет"
все просто.
но часто эти в страницы я как сам вношу изменения (адрес, тел.)
и я не знаю - есть у них общага или нет.
ранее - по умолчанию вносилось $hostel = 1 - что означает "нет".
но это не верно. и поэтому добавил поле "не указано" что должно быть по умолчанию.
и теперь все корректно. | |
|
|
|
|
|
|
|
для: liberty
(09.06.2013 в 01:33)
| | Темный лес, ей богу.
Если вы готовите сводный список учебных заведений, в котором нужно указать наличие или отсутствие общежития, а также отсутствие информации по этому вопросу, то наверное ни "не выбрано", а "неизвестно", не так ли?
Вся котовасия по поводу темы этой как раз из-за неумения вами поставить правильно вопрос, отчего не понять, чего же вы там делаете.
И такие данные для вашего случая лучше хранить в ENUM. | |
|
|
|
|
|
|
|
для: confirm
(09.06.2013 в 03:02)
| | пусть будет "неизвестно"
то если есть "есть", нет", и "неизвестно" то как тогда переписать строчку
$hostel = ($_POST['hostel'] == 1) ? 'есть' : 'нет';
|
если брать поле, которое предлагаете Вы - то какую длину ставить?
ENUM or SET data too long? Get more editing space | |
|
|
|
|
|
|
|
для: liberty
(09.06.2013 в 03:07)
| | А если я подделаю форму и вышлю вам вместо значения 1, например 121, тогда что? Или это исключительно для себя делается, и никто кроме вас не может этого добавлять?
Впрочем лажу всегда можно прислать. ) | |
|
|
|
|
|
|
|
для: confirm
(09.06.2013 в 03:11)
| | ну как мы можете прислать 121? )))
если только 1, 2 и 3.
<p><input type="radio" name="hostel" value="1" />Есть</p>
<p><input type="radio" name="hostel" value="2" />Нет</p>
<p><input type="radio" name="hostel" value="3" checked />неизвестно</p>
|
| |
|
|
|
|
|
|
|
для: liberty
(09.06.2013 в 03:17)
| | А вот так, напишу точно такую же форму, но со своими значениями и отправлю ее по указанному вами адресу. Ну а если задаться ботом, то значит буду вообще безо всякой формы вам эти данные слать с какими угодно значениями. | |
|
|
|
|
|
|
|
для: confirm
(09.06.2013 в 03:21)
| | и что делать? | |
|
|
|
|
|
|
|
для: liberty
(09.06.2013 в 03:22)
| | Ну не знаю, самый верный способ, это пистолет к виску.... и нет проблем. )
Вы чем оперируете готовя свой шедевр - шариковой ручкой на бумаге, или же все таки языком программирования? Ну наверное же у этого языка есть то, на чем можно построить проверку принимаемых данных? Или это невозможно сделать?
Вы ранее задавали вопрос этот, и я вам на него ответил (вариант), вы хоть обратили на это внимание? Вот что это и для чего это я писал?
$_POST['beer'] & 1 | |
|
|
|
|
|
|
|
для: confirm
(09.06.2013 в 03:31)
| | так. не сдаемся.
если у меня
<p><input type="radio" name="hostel" value="1" />Есть</p>
<p><input type="radio" name="hostel" value="2" />Нет</p>
<p><input type="radio" name="hostel" value="3" checked/>Неизвестно</p>
|
то почему при выборе "Неизвестно"
записывается в БД "1"?
if(isset($_POST['hostel'])) {$hostel = isset($_POST['hostel']) ? (int)$_POST['hostel'] & 1 : null;}
|
| |
|
|
|
|
|
|
|
для: liberty
(09.06.2013 в 03:47)
| | А зачем вы вставили в свой код то, что я писал?
(int)$_POST['hostel'] & 1
Вы понимаете, что тут выполняется?
И вы понимаете, что ваши условия, мягко выражаясь, вверх попой? | |
|
|
|
|
|
|
|
для: confirm
(09.06.2013 в 03:54)
| | таки сокращенные записи я не понимаю.
а такие вроде понятны
if (isset($_POST['tel_pk']))
{$tel_pk = $_POST['tel_pk']; if ($tel_pk == '')
{unset ($tel_pk);}}
|
| |
|
|
|
|
|
|
|
для: liberty
(09.06.2013 в 03:56)
| | А если не понимаете, то зачем копируете, вставляете в свой код, а потом спрашиваете почему так получается? Может мне просто нравится эта закоруючка &, она мне напоминает безрукую Венеру Милосскую, вот я и написал - $_POST['beer'] & 1, что означает переменная beer и Венера 1 шт.
Открывайте руководство РНР (давно пора скачать его с официального сайта), выучить, попробовать и понять все его операторы. Это не так и сложно.
&, она же И - логическая операция, и применил я ее как "маску", которая позволяла мне оперировать только самым младшим битом принятого значения, остальные биты значения отбрасывались. Но я ожидал только 0 или 1, при этом все что выше этих значений мне бы и давало требуемое - то есть,четное и нечетное.
А у вас какие значения? Вы так ничего и не будет понимать, если просто будете копировать код чужой.
Проверять надо, а проверка предполагает либо возврат пользователю ошибок, либо приводить значения к по умолчанию при ошибках. У вас ни того и ни другого. Открывайте манул, ищите в нем вот такое:
<?
$var = filter_var($var, FILTER_VALIDATE_INT, 'options'=>array('min_range' => 1, 'max_range' => 3))
| А по возвращенному значению принимайте решение.
Трудно представить что можно еще кроме "да" и "нет", но вдруг еще потребуется "50/50" и что тогда, будет весь код перковыривать? Значение по умолчанию, это все таки первое в порядке значение, а затем уже идут всевозможные наборы. А у вас через задницу все. | |
|
|
|
|
|
|
|
для: confirm
(09.06.2013 в 04:22)
| | ну тогда в первый класс.
с чего начать? какой ресурс посоветуете для изучения php? | |
|
|
|
|
|
|
|
для: liberty
(09.06.2013 в 04:28)
| | Да какой вам еще ресурс нужен, если есть официальный?
Скачивайте, и изучайте - http://www.php.net/download-docs.php | |
|
|
|
|
|
|
|
для: confirm
(09.06.2013 в 04:32)
| | спасибо. скачиваю | |
|
|
|
|
|
|
|
для: liberty
(09.06.2013 в 04:42)
| | скачал.
в чем может быть проблема - меню в левой колонке есть - а в правой пустота.
пробовал несколька вариатнтов. | |
|
|
|
|
|
|
|
для: liberty
(09.06.2013 в 04:59)
| | Либо сам файл битый (было у них однажды такое), либо ваш файл заблокирован системой. Посмотрите его свойства, если он заблокирован, то во вкладке Общие будет сообщено об этом, и будет доступна кнопка Разблокировать. | |
|
|
|
|
|
|
|
для: liberty
(09.06.2013 в 04:59)
| | Скачал, проверил. Кто-то криворукий его составлял - ТОС битая, не все содержимое отображает, доступ ко всему возможен только со страницы Справочник функций. | |
|
|
|
|
|
|
|
для: confirm
(09.06.2013 в 05:34)
| | ну там вообще русского вариант нет
http://us2.php.net/get/php-5.4.16.tar.bz2/from/a/mirror | |
|
|
|
|
|
|
|
для: liberty
(09.06.2013 в 05:36)
| | Вы разобрались почему не отображает страницы?
А в этом в ТОС (это и есть левая часть, оглавление), самый последний каталог (тоже кривой, не верна кодировка), который отображается "крякозябриками", это и есть страница оглавления - Справочник функций. Вот с нее можно переходить на все содержимое. | |
|
|
|
|
|
|
|
для: confirm
(09.06.2013 в 05:41)
| | выбрал чекбокс
<p><input type="checkbox" name="hostel" value="1" />Наличие общежития</p>
|
в обработчике
$hostel = ($_POST['hostel'] == 1) ? "да" : "";
|
вроде работает.
если отмечаем чебокс - будет написано наличие общаги "да"
если не отмечено - то ничего не выводится.
но как поставить значение "нет", оставив при этом " " (пустоту).
объясню.
если я сам захожу на страницу модерации компании и изменения дургие данные и не выбираю чекбокс то при
$hostel = ($_POST['hostel'] == 1) ? "да" : "нет";
|
идет запись "нет".
как ничего не выбирая, чтобы ничего не записывалось в поле hostel? | |
|
|
|
|
|
|
|
для: liberty
(09.06.2013 в 17:41)
| | Мне проще за оплату написать вам все с нуля, нежели объяснить простые вещи. Ну не понимаете вы, и мало того, выше я писал и примеры, в которых есть ответ на этот вопрос, и все напрасно. Ну не знаю я как вам еще можно объяснить. | |
|
|
|
|
|
|
|
для: liberty
(09.06.2013 в 17:41)
| | Добавьте условие проверки существования переменной
if(isset($_POST['hostel'])){
$hostel = ($_POST['hostel'] == 1) ? "да" : "нет";
...
// Запись в базу данных
}
|
| |
|
|
|
|
|
|
|
для: cheops
(09.06.2013 в 19:04)
| | все равно до меня пока не доходит.
у меня в БД записывается уже
insert pu SET hostel='$hostel',
|
что проверять нужно, на какое условие? | |
|
|
|
|