Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Непонятка с enum
Форумы портала PHP.SU » » Работа с СУБД » Непонятка с enum

Страниц (1): [1]
 

1. alexey11 - 10 Сентября, 2011 - 15:05:31 - перейти к сообщению
Не могу понять как этот механизм работает
Раньше никогда это не приходилось делать и потому туго доходит.

Есть база, содержащая поле pr и допустимыми значениями 1 и 2, тип enum.(pr enum('1','2'))

Имеется форма
PHP:
скопировать код в буфер обмена
  1. ...
  2. <input type="radio" name="name1" value="<?=$row['pr']?>"> Да<br>
  3. <input type="radio" name="name1" value="<?=$row['pr']?>"> НЕТ<br>
  4. ...


В скрипте идет следующая обработка
PHP:
скопировать код в буфер обмена
  1.  ...
  2.  $name1 = intval($_POST['pr']);
  3.  $query="INSERT INTO $table SET pr='$name1'";
  4. ...


Как в базу передать этот параметр? Куда его вообще здесь запихнуть?
2. alexey11 - 12 Сентября, 2011 - 20:41:10 - перейти к сообщению
... в базу добавлять у меня получилось, таким способом:
CODE (html):
скопировать код в буфер обмена
  1. <input type="radio" name="vibor" value="yes"> Есть
  2. <input type="radio" name="vibor" value="no"> Нет<br>


PHP:
скопировать код в буфер обмена
  1. $selected_radio = $_POST['vibor'];
  2.  
  3. if ($selected_radio == 'yes') {
  4. $pr='1';
  5. }
  6. else if ($selected_radio == 'no') {
  7. $pr='2';
  8. }


Но как теперь считав с базы значение 1 или 2, передать значение в форму?
3. DeepVarvar - 12 Сентября, 2011 - 20:56:40 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <input type="radio" name="vibor"
  2.   value="1"<?=($row['vibor'] ==1)?' checked="checked"':''?>> Есть
  3. <input type="radio" name="vibor" value="0"> Нет


Вообще зачем ENUM???
Сделайте булевое или на худой конец TINYINT (1)

Браузер отправит только тот радио который выбран..
А если у вас выбор ТОЛЬКО ИЗ ДВУХ целесообразнее использовать не радио а чекбокс
Тогда все гораздо проще:
PHP:
скопировать код в буфер обмена
  1. $vibor = (isset($_POST['vibor'])) ? 1 : 0;
  2. // если выбран, то будет присутствовать, а значит еденица
  3. // дальше апдейт базы или что там у вас есть...

CODE (html):
скопировать код в буфер обмена
  1. <input type="checkbox" name="vibor"<?=($row['vibor']==1)?' checked="checked"':''?> />
4. alexey11 - 13 Сентября, 2011 - 16:45:20 - перейти к сообщению
Ок! Сделал поле TINYINT (1)

Вписал по Вашему примеру и получается, что с установленным флагом в базу попадает 1, при снятом флаге 0, но при повторном захождении в форму установленный флаг не сохраняется...
5. illy - 13 Сентября, 2011 - 16:55:31 - перейти к сообщению
не сохраняется - можно использовать куки Хорошо
6. DeepVarvar - 13 Сентября, 2011 - 17:01:15 - перейти к сообщению
Сохраняется, если вы его значение будете всегда из базы запрашивать.
7. alexey11 - 13 Сентября, 2011 - 22:04:10 - перейти к сообщению
Да,получилось. Спасибо!

 

Powered by ExBB FM 1.0 RC1