Флажок формы PHP и неопределенный индекс - PullRequest
3 голосов
/ 14 апреля 2009

Я получаю сообщение об ошибке «Неопределенный индекс» при отправке формы с непроверенным флажком. Есть ли другой способ, кроме проверки «isset» или «пустой» для каждого отдельного объявленного значения?

Я посмотрел на этот Вопрос , и мне трудно поверить, что это единственное решение.

Ниже приведен пример кода: РЕДАКТИРОВАТЬ: пожалуйста, не, что это не фактические имена столбцов таблиц; они имеют уникальные имена (например, "postAddress, displayPhone, student и т. д.)

Ответы [ 3 ]

7 голосов
/ 14 апреля 2009

Вы можете написать функцию, которая проверяет, был ли установлен флажок:

function checkbox_value($name) {
    return (isset($_POST[$name]) ? 1 : 0);
}

Теперь вызовите эту функцию в вашем запросе так:

$sql =  'UPDATE table SET '.
        'checkbox1 = '. checkbox_value('checkbox1') .','.
        'checkbox2 = '. checkbox_value('checkbox2') .','.
        'checkbox3 = '. checkbox_value('checkbox3') .','.
        'checkbox4 = '. checkbox_value('checkbox4') .','.
        'checkbox5 = '. checkbox_value('checkbox5') .','. "LIMIT 1";
6 голосов
/ 14 апреля 2009

Если вы хотите включить / выключить флажок, вы можете написать скрытое значение, прежде чем вы установите флажок.

<input type="hidden" name="checkbox1" value="no" />
<input type="checkbox" name="checkbox1" value="yes" />

Это всегда будет возвращать значение, либо нет (по умолчанию, если флажок не установлен по умолчанию), либо да.

Вы можете проверить ввод с помощью функций фильтра с помощью FILTER_VALIDATE_BOOLEAN .

Это проще, если вы напишите для этого функцию, такую ​​как formCheckbox ($ name), с опциями для значений (значение 'on' означает, что флажок установлен по умолчанию), атрибутами и т. Д.

0 голосов
/ 14 апреля 2009

попробуйте следующее

<?php
//first part of the query
$query = "UPDATE table SET ";

$howManyCheckboxes = 5;
//for every checkbox , see if it exist , if it is, add it to the query
for($i=1;$i<=$howManyCheckboxes;$i++)
{
   if(isset($_POST['checkbox'.$i]))
   {
      $query = $query . " checkbox".$i."='".escape($_POST['checkbox'.$i])."',";
   }
}
//lets remove the last coma
$query = substr($query,0,-1);
//add the rest of the query
$query = $query . " LIMIT 1";

$result = mysql_query( $query );
if( ! $result ) echo "um, not everything went as expected.";
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...