Проверка формы PHP - PullRequest
       1

Проверка формы PHP

0 голосов
/ 02 сентября 2011

Я работаю над формой php с некоторыми правилами проверки.

Если некоторые поля оставлены незаполненными, требуется заполнить форму, сообщит об ошибке и попросит пользователя заполнить поле.

В настоящее время форма хранит значения данных $ _POST, чтобы в случае возникновения ошибок оставались данные, находящиеся в поле.

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

Вот код для них

<! Drop Down Menu to get student names from database !>
<SELECT NAME=studentName >
<OPTION VALUE=0 selected="selected" >
<?php if(isset($_POST['studentName'])) echo $_POST['studentName'];?>
<?php echo $options1?>
</SELECT>  

Есть идеи, почему это происходит?

Ответы [ 2 ]

1 голос
/ 02 сентября 2011

Для начинающих

означает, что опция 0 всегда будет выбрана.

Вы могли бы сделать что-то вроде следующего, извините, если в этом фрагменте есть ошибки, но он должен дать вам общее представление о том, как вы можете достичь того, чего хотите:

<?php
    $myOptions = array(
        '0' => ' --- nothing selected ---',
        '1' => 'Apples',
        '2' => 'Bananas',
        // ...
    );
?>
<select name="studentName">
    <? php
    foreach($myOptions as $key => $value ) {
        $selected = isset($_POST['theOption']) && $_POST['theOption'] == $key ? 'selected="selected"' : "";
        echo '<option value="' . $key . '" '. $selected . '>' . $value . "</option>";
    }
    ?>
</select>

Вы можете немного исправить вышесказанное, используя альтернативный синтаксис PHP:

http://php.net/manual/en/control-structures.alternative-syntax.php

Это не является частью вашей ошибки, но является хорошей практикой, некоторые ваши HTML-теги и их атрибуты пишутся в верхнем регистре, и в настоящее время принято использовать строчные. Так более стандартно.

1 голос
/ 02 сентября 2011

Вы не должны повторять $_POST['studentName'];вы должны проверить его по значению каждой из ваших опций (это должен быть массив в PHP, который вы конвертируете в список <option> s в цикле foreach), и установить атрибут selected, если он соответствует.

В sidenote ваш HTML-код недействителен;некоторые атрибуты не заключены в кавычки, и комментарий должен быть в <!-- ... -->, а не <! ... !>.

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