Я создаю простую страницу регистрации:
<?php $firstName = $_POST['firstName']; ?> <form action="registration.php" method="post" enctype="multipart/form-data"> <table> <tr> <td> <b>First name:</b> </td> <td> <input type="text" name="firstName" size="30" maxlength="400" value="<?php echo $firstName; ?>" /> </td> </tr> <tr> <td> <input type="submit" value="Submit" /> </td> </tr> </table> </form>
Если пользователь вводит недопустимое первое имя (например, слишком короткие или странные символы), страница перезагружается сообщением об ошибке, чтобы сообщить им, что они должны повторно ввести свое имя HOWEVER, значение текстового поля – это то, что они совсем недавно вошли. Таким образом, всякий раз, когда пользователь не проходит проверку, им не нужно повторно вводить все поля в форме.
Какой хороший способ запомнить, что пользователь вводил для выпадающего меню? Проблема для меня в том, что значение параметра отличается от текста внутри тега параметра. Поэтому, когда я использую вышеуказанный подход, если я выберу «Мар», если при недействительном представлении в раскрывающемся меню появляется «03».
<select name="birthdayMonth"> <option value="-1">Month:</option> <option value="01">Jan</option> <option value="02">Feb</option> <option value="03">Mar</option> <option value="04">Apr</option> <option value="05">May</option> <option value="06">Jun</option> <option value="07">Jul</option> <option value="08">Aug</option> <option value="09">Sep</option> <option value="10">Oct</option> <option value="11">Nov</option> <option value="12">Dec</option> </select>
На вершине:
$birthdayMonth = $_POST['birthdayMonth']
В select
:
<select name="birthdayMonth"> <option value="-1">Month:</option> <option value="01"<?php echo $birthdayMonth == '01' ? 'selected="selected"' : ''; ?>>Jan</option> <option value="02"<?php echo $birthdayMonth == '02' ? 'selected="selected"' : ''; ?>>Feb</option> <option value="03"<?php echo $birthdayMonth == '03' ? 'selected="selected"' : ''; ?>>Mar</option> <option value="04"<?php echo $birthdayMonth == '04' ? 'selected="selected"' : ''; ?>>Apr</option> <option value="05"<?php echo $birthdayMonth == '05' ? 'selected="selected"' : ''; ?>>May</option> <option value="06"<?php echo $birthdayMonth == '06' ? 'selected="selected"' : ''; ?>>Jun</option> <option value="07"<?php echo $birthdayMonth == '07' ? 'selected="selected"' : ''; ?>>Jul</option> <option value="08"<?php echo $birthdayMonth == '08' ? 'selected="selected"' : ''; ?>>Aug</option> <option value="09"<?php echo $birthdayMonth == '09' ? 'selected="selected"' : ''; ?>>Sep</option> <option value="10"<?php echo $birthdayMonth == '10' ? 'selected="selected"' : ''; ?>>Oct</option> <option value="11"<?php echo $birthdayMonth == '11' ? 'selected="selected"' : ''; ?>>Nov</option> <option value="12"<?php echo $birthdayMonth == '12' ? 'selected="selected"' : ''; ?>>Dec</option> </select>
Это действительно грязно, что нужно делать, но оно будет работать:
http://www.plus2net.com/php_tutorial/pb-drop.php
Было бы лучше использовать цикл для создания раскрывающегося списка, а затем добавить выбранное значение = "selected" в правильный вариант.
<option value="03" <?php echo $_POST['birthdayMonth'] == '03' ? 'selected="selected"' : '' ?>>Mar</option>