Вставьте Да или Нет в MySQL на основе значения флажка - PullRequest
1 голос
/ 15 ноября 2011

У меня есть список флажков, которые выглядят так, как показано ниже, числа 416, 419 и т. Д. Представляют номер страницы. Они предназначены для 2 наборов полей, одно из которых «likebutton», другое «sendbutton».

 <input type="checkbox" name="likebutton[]" value="416" />
 <input type="checkbox" name="likebutton[]" value="417" />
 <input type="checkbox" name="likebutton[]" value="418" />
 <input type="checkbox" name="likebutton[]" value="419" />
 ...more checkboxes
 <input type="checkbox" name="sendbutton[]" value="416" />
 <input type="checkbox" name="sendbutton[]" value="417" />
 <input type="checkbox" name="sendbutton[]" value="418" />
 <input type="checkbox" name="sendbutton[]" value="419" />
 ...more checkboxes

Я пытаюсь добиться того, чтобы, когда эти флажки были отмечены, я мог обновлять каждую строку (страницу) данными либо Да (проверено), либо Нет (не проверено) для полей likebutton и sendbutton в MySQL. В настоящее время мой запрос MySQL выглядит примерно так. Кажется, это работает только тогда, когда у меня есть одна функция foreach, и если я отмечаю один или несколько флажков, но если я оставляю коды, как указано ниже, или если у меня все не проверено, я получаю ошибку для функции foreach.

 foreach($_POST["likebutton"] as $pagenumberL)
 $YesNoL = isset($_POST["likebutton"]) ? 'Yes' : 'No';
 mysql_query("UPDATE pages SET likebutton='".$YesNoL."' WHERE page_id='".$pagenumberL."'");

 foreach($_POST["sendbutton"] as $pagenumberS)
 $YesNoS = isset($_POST["sendbutton"]) ? 'Yes' : 'No';
 mysql_query("UPDATE pages SET sendbutton='".$YesNoS."' WHERE page_id='".$pagenumberS."'");

Любой указатель на мою проблему или лучшее предложение относительно того, как я должен действовать?

1 Ответ

3 голосов
/ 15 ноября 2011

Проблема с флажками (как вы уже отметили) в том, что непроверенные не предоставляют никаких данных.

Стандартный способ обойти это ...

<input type="hidden" name="field_name" value="0">
<input type="checkbox" name="field_name" value="1">

Когда этот флажок установлен, его значение передается так, как это будет показано в документе позже. Если флажок не установлен, вводится скрытое значение ввода.

Затем вы можете просто проверить значение по имени

$field = isset($_POST['field_name']) ? $_POST['field_name'] : false;
$dbFlag = $field ? 'Yes' : 'No';

В вашем конкретном случае включите page_id во имя ввода, например,

<input type="hidden" name="likebutton[416]" value="0">
<input type="checkbox" name="likebutton[416]" value="1">

А в PHP

foreach ($_POST['likebutton'] as $pageId => $likeFlag) {
    $dbFlag = $likeFlag ? 'Yes' : 'No';

    // update DB
}
...