Есть проблема с добавлением значения checkbox в MySQL средствами PHP

  • Автор темы не-phpclub
  • Дата начала

не-phpclub

Guest
Есть проблема с добавлением значения checkbox в MySQL средствами PHP

Есть проблема с добавлением значения checkbox в MySQL средствами PHP.
Есть:
<INPUT name=metallic_flag type=checkbox value=1>

mysql_query("insert into car(id, metallic) values('1', '$metallic_flag')");

Почему при установке в default checked ошибки нет, а при приведенной здесь записи - есть.

КАК ДОБАВИТЬ ЗНАЧЕНИЕ ИЗМЕНЕННОГО CHECKBOX в MYSQL-ТАБЛИЦУ?
 

BabyKiller

Guest
Попробуй изменить переменную на metallic_flag[], но тогда тебе ещё придётся подправить SQL запрос
 

rotoZOOM

ACM maniac
Может тебе помогут такие вещи:
вместо $metallic_flag используй $_REQUEST["metallic_flag"]
и если я не ошибаюсь, то одинарных кавычек не нужно,
если у тебя metallic - это boolean - то значение должно быть
true либо false;

mysql_query("insert into car(id, metallic) values('1', ".$_REQUEST["metallic_flag"].")");
Если не получится, то посмотри чему равен $_REQUEST["metallic_flag"]
 

BabyKiller

Guest
rotoZOOM
Если я не ошибаюсь, то просто $metallic_flag вообще никак не передаётся через форму.
 

Wicked

Новичок
не-phpclub, текст ошибки в студию! Тогда и поговорим.

Г-н rotoZOOM, одиночные кавычки Вы зря убрали, т.к. выключенный чекбокс возвратит пустую строку и ваш запрос сломается, в отличие от изначально приведенного. А еще неплохо бы заэскейпить то, что приходит из $_REQUEST["metallic_flag"].

-~{}~ 11.01.05 06:35:

Originally posted by BabyKiller
rotoZOOM
Если я не ошибаюсь, то просто $metallic_flag вообще никак не передаётся через форму.
А может ломается на том, что всегда насильно ставится id = 1 ? Предлагаю пока что не гадать, а дождаться репорта об ошибке )
 

rotoZOOM

ACM maniac
BabyKiller если у него все это заключено в правильно описанную форму, то передается ... куда он денется

Wicked проверил. Когда чекбокс не отмечен передается "false", когда отмечен "true"
 

Wicked

Новичок
Originally posted by rotoZOOM Wicked проверил. Когда чекбокс не отмечен передается "false", когда отмечен "true" [/B]
Ты это узнал, сравнив $_REQUEST["metallic_flag"] с true и false?
PHP:
if ($_REQUEST["metallic_flag"] == true) { ... };
if ($_REQUEST["metallic_flag"] == false) { ... };
Так?

-~{}~ 11.01.05 08:41:

Я всегда думал, что если чекбокс включен, то передается его value, если нет - то он вообще не присутствует в $_GET, $_POST.
 

Wicked

Новичок
А у меня так:
PHP:
<?php
  var_dump($_REQUEST);
?>
<form method="POST">
  <INPUT name="metallic_flag1" type="checkbox" value="1" />
  <INPUT name="metallic_flag2" type="checkbox" value="2" checked/>
  <input type="submit">
</form>
При сабмите этой формы сразу после загрузки страницы выводит:
Код:
array(1) {
  ["metallic_flag2"]=>
  string(1) "2"
}
...
Windows XP En + SP1
PHP 4.3.7
Apache 2.0.52
IE 6.0.2800.1106.xpsp1.020828-1920IS

-~{}~ 11.01.05 09:43:

Originally posted by rotoZOOM
если у тебя metallic - это boolean - то значение должно быть
true либо false;
Не должно :)
BIT, BOOL - These are synonyms for TINYINT(1). (c) MySQL Ref. Man.

И еще камень в твой огород: script.php?metallic_flag=' :)
 

rotoZOOM

ACM maniac
И еще камень в твой огород: script.php?metallic_flag='
Это если методом GET передается.
Но в любом случае лучше проверять значение, это точно.
 

BabyKiller

Guest
Если я не ошибаюсь, то просто $metallic_flag вообще никак не передаётся через форму.
То что я написал - это полная брешь!!!!!!!! Больше не верьте мне :)

Wicked правильно написал, что значение value передаётся лишь при отмеченном чекбоксе.
НО!!!! Как меня могло так глючить???? Я сегодня утром, несколько раз проверял значение через php_info!!!! И как вы думаете? У меня значение почему то передавалось лишь если переменная указана как массив (xxx[]). А сейчас смотрю, и как обычная переменная передайтся (xxx). Непойму в чём косяк. Или комп так жутко глючил
 
Сверху