PHP Loop для Checked Boxes возвращает ошибки - PullRequest
1 голос
/ 10 октября 2011

В настоящее время я пытаюсь сконструировать цикл for для итерации любых «проверенных» флажков, и с этого используйте значение в слоте «значение» для выполнения некоторых запросов.Я, к сожалению, борюсь с этим, так как список флажков не задан заранее, они являются динамическими из базы данных в ожидании предыдущего выбора пользователей.

Цикл фактически работает для представления проверяемых элементов:

?>
    <input type="checkbox" name="option[]" value="$listing_id">
    <font size="+1" color="green"><?php echo"$list_name"; ?>:</font><br />
<?php

Идентификатор листинга в значении - это то, с чем мне нужно работать в запросе mysql, прежде чем я выполню запрос на обновление.Цикл for, который должен работать:

foreach($_POST['option'] as $option) //loop through the checkboxes
{
    ...
}

Запрос на обновление будет работать внутри него, так как он просто копируется откуда-то еще, мне просто нужен 'Listing_ID' из отмеченных флажков.

Я запустил этот код, чтобы, надеюсь, выполнить некоторую отладку:

if(empty($_POST['option'])){
    echo "no checkboxes checked.";
} else {
    if(!isset($_POST['option'])){
        echo "no set.";
    }
}

и он возвращает «флажки не отмечены».

Теперь я попал в серую область относительно того, почемуэтот цикл for не работает (это было взято из другого примера в Интернете).

Ответы [ 3 ]

1 голос
/ 10 октября 2011

empty($_POST['option']) вернет true, если либо $_POST['option'] не задано (как !isset($_POST['option']) (!)), Либо пустой массив.

Если вам нужно отладить происходящее, используйте var_dump($_POST['option']);, чтобы узнать, что было отправлено для флажков option. Я также предлагаю вам сделать var_dump($_POST);, чтобы вы могли видеть, что было отправлено в целом - например, если почтовое действие не post, вы сразу же заметите). Для вывода HTML:

<code>echo '<pre>', htmlspecialchars(print_r($_POST, true)), '
';

Это должно дать вам информацию, которую вы ищете. Для каждого отдельного флажка вы можете сделать:

foreach($_POST['option'] as $option) //loop through the checkboxes
{
    var_dump($option);
}
1 голос
/ 10 октября 2011

Прежде всего, ваш код мне кажется ошибочным.Может быть, это просто опечатка, но

 <input type="checkbox" name="option[]" value="$listing_id">

должно быть

 <input type="checkbox" name="option[]" value="<?=$listing_id?>"/>

Более того, использование пустого над массивом не годится вообще.

0 голосов
/ 10 октября 2011

Попробуйте повторить $option в цикле, чтобы увидеть, что это за значение, и там можно увидеть, есть ли что-то там.

foreach($_POST['option'] as $option) //loop through the checkboxes
{
    echo $option . "<br />";
}

Также убедитесь, что для метода вашей формы установлено значение POST или что его действие указано в правильном месте.У вас также есть ошибка в вводе:

<input type="checkbox" name="option[]" value="$listing_id">

Я предполагаю, что вы имели в виду:

<input type="checkbox" name="option[]" value="<?php echo $listing_id;?>">

ОБНОВЛЕНИЕ:

В результате код не был опубликован.Обнаружена ошибка в операторе if, который всегда возвращал false, в коде, размещенном выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...