как сохранить значение флажка в таблице

#php #mysql #html

#php #mysql #HTML

Вопрос:

я хочу сохранить значение флажка в моей базе данных sql, в основном я хочу сохранить значение по умолчанию, если оно установлено или нет .. я не уверен, что это сохранит значение true или false?

 <div><input type="checkbox" value="Yes" name="chk"/> Yes! I will come!</div>
  

должен ли я вставить в свою таблицу вот так?

 '$_POST[chk]'
  

Спасибо

Ответ №1:

$_POST[chk] в вашем случае вернет текст Yes , если установлен флажок, и вообще не установит его, если нет. Зная это, вы можете настроить поле базы данных так, как вы хотите, скажем, 1 или 0 для типа tinyint:

 $chk = isset($_POST['chk']) ? 1 : 0;
$sql = "update tbl set chk1 = $chk";
  

Комментарии:

1. Неправильный флажок приведет к отправке значения, если установлен флажок, или не отправке значения, если не установлен флажок. Однако ваш код может работать.

2. @Tadeck Да, спасибо за исправление. Мой ответ был полным бредом. Теперь это должно быть законно.

3. И Шреддер отредактировал свой ответ ……, Это будет работать, но не самое элегантное решение.

4. Должно быть просто ‘$ chk= 1;’ во ВТОРОЙ строке вашего кода, потому что isset($_POST[‘chk’]) вернет значение true только в том случае, если установлен флажок

5. @djaqeel А, слово за! 😉 Имеет смысл, хе-хе

Ответ №2:

Я бы рекомендовал использовать тип данных tinyint (1) для столбца, в котором вы планируете сохранять, был ли установлен флажок или нет.

 ALTER table `my_table` ADD COLUMN `my_checkbox_col` tinyint(1) unsigned NOT NULL default 0;
  

Комментарии:

1. Если вы закончили с «планированием» базы данных для OP, не могли бы вы, пожалуйста, продвинуться вперед и пролить некоторый свет на реальную проблему OP?

2. Вау, это была просто рекомендация, поскольку фактическое решение уже было опубликовано.

Ответ №3:

ДА. И очистите входные данные перед вставкой.

Используйте

 if(isset($_POST[chk]) ) {  
      $chk = (string) $_POST[chk];
   }
  

Комментарии:

1. Вы сказали очистить ? Где вы его очищаете? Ваша часть кода очень небезопасна (чтобы быть более небезопасной, вам нужно было бы передать ее в eval() ).

2. Зачем нужна очистка записи с флажком? Это потому, что данные могут быть взломаны / изменены?

3. @Tadeck Я не стал его очищать. И почему это очень небезопасно ?

4. @Shredder: Вам не нужно быть хакером, чтобы иметь возможность изменять то, что отправляется в пределах значения любого флажка. Как разработчик вы должны очищать любой ввод, отправляемый пользователем (с помощью GET , POST или любым другим способом).

5. @Tadeck Понял. Ну, я думаю, что мой код защищен от этого.

Ответ №4:

Нет.

Вы должны сделать это следующим образом

 if(isset($_POST['chk'])):
$chk = mysql_real_escape_string($_POST['chk']);
else:
$chk = 0;
endif;
$sql = "INSERT INTO table VALUES ('$chk')";
  

Затем вставьте поле как ‘$chk’.
Это самый безопасный метод, и лучше всего удалить часть переменной [»], поскольку это может повлиять на ваш СИНТАКСИС при добавлении ее в таблицу.

Комментарии:

1. Итак, вы либо вставляете ‘Yes’, либо ‘0’? Что, если данные каким-то образом будут изменены. Похоже, что это сломало бы систему.