проверяется независимо от значения = "" (пусто) в массиве входных флажков - PullRequest
1 голос
/ 17 января 2011

Да.Этот разрывает меня.Я нашел много учебников по этой конкретной теме, но мне кажется, что ничего не работает.Я должен упустить что-то, чего не могу найти.

Я просто пытаюсь оставить выбранные флажки отмеченными, если в форме была предыдущая ошибка.Моя проверка корректно работает со всеми полями, но мне нужно сохранить флажки, и я просто не могу решить эту проблему.

Вот фрагменты, с которыми я работаю:

Это проверяет, является ли $ data [id] isset ()

<input name="seminar[]" type="checkbox" id="seminar[]" 
value="
<?php
if(isset($data['id'])) {
         $checked = "checked=\"checked\"";
      } else {

        echo "";
      }
?>
" <?php echo "$checked"; ?>>

И я даже проверил в своем источнике HTML, и это то, что показывает после отправки:

<input name="seminar[]" type="checkbox" id="seminar[]" value="" checked="checked"> 

Как видите, значение = "" пусто!, Поэтому в моем скрипте выше должно отображаться "", но это не работает.

На самом деле, когда я очищаю кеш и перезагружаювсе флажки только отмечены!?

Может кто-нибудь увидеть, что я делаю не так.Может быть, я переворачиваю не те камни здесь ... Не знаю, но почти через 4 часа я теряю белый флаг.

1 Ответ

3 голосов
/ 17 января 2011

Я вижу несколько неправильных вещей, которые могут способствовать вашей проблеме.

Сначала вам присваивается name флажка seminar[]. Это создает массив со значениями из всех флажков, которые используют это имя. Поскольку вы не указываете ключ между [], он автоматически сделает это за вас. Вы должны указать какой-то ключ самостоятельно, чтобы потом их можно было сопоставить.

Пример:

<input type="checkbox" name="seminar[0]" id="seminar_0" value="" />

Затем вы можете проверить, установлен ли он, выполнив следующее:

if(isset($_POST['seminiar'][0])) {
  echo "checked=\"checked\"";
}

Во-вторых, вы не можете использовать seminar[] для ID флажка. Посмотрите на мой пример, как вы можете это сделать. Идентификаторы должны быть уникальными на странице; Вы не можете использовать один и тот же идентификатор дважды на одной странице.

В-третьих, что это за $data['id']? Вы должны проверить значение $_POST для точного названия элемента. Опять же, посмотрите на мой первый пример.

Я бы переформатировал ваш код, чтобы он выглядел примерно так:

$checkboxes = array(0 => "Value 1", 1 => "Value 2", 2 => "Value 3");
foreach($checkboxes as $k => $v) {
  echo '<label for="seminar_'.$k.'">'.$v.'</label><input type="checkbox" name="seminar['.$k.']" id="seminar_'.$k.'" value="'.htmlentities($v).'" '.(isset($_POST['seminar'][$k]) ? 'checked="checked" ' : '').'/>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...