Как "запомнить" выбранные значения формы в PHP?
если пользователь не проходит проверку формы, то, чтобы сделать это проще для них, мы можем сделать это:
if(isset($_POST['submit'])) {
$email = $_POST['email'];
//....
}
<input type="text" name="phone" value="<?php echo $phone; ?>" />
<input type="text" name="email" value="<?php echo $email; ?>" />
...
таким образом, в этом случае, если пользователь не проходит проверку, потому что они ввели электронную почту, но не номер телефона, то, когда страница обновляется после отправки и предупреждает их о недостающем телефоне, электронная почта (которую они заполнили) уже будет на своем месте и не потребует от пользователя перепечатать это.
но как я могу "запомнить" значения, выбранные пользователем для select, radio а входы флажков?
3 ответов
он работает так же, но для этого потребуется еще немного работы:
<select name="whatever">
<option value="Apple">Apple</option>
<option value="Banana" selected="selected">Banana</option>
<option value="Mango">Mango</option>
</select>
Banana is selected here.
<input type="checkbox" name="fruits[]" value="banana" /> Banana
<input type="checkbox" name="fruits[]" value="mango" checked="checked" /> Mango
<input type="checkbox" name="fruits[]" value="apple" checked="checked" /> Apple
Mango and Apple are checked here
Так что в основном вы добавляете selected="selected"
или checked="checked"
в соответствующие поля при создании форма.
другой вариант будет использовать что-то вроде jQuery, чтобы сделать эти выборы после загрузки страницы и готовности к манипуляции DOM. Таким образом, вы можете легко поместить все изменения в одном месте, не уродуя код. Конечно, теперь есть недостаток, который вам нужно будет загрузить jQuery и ваш пользователям потребуется JS one.
вот пример кода.
<?php
$options = array('option1' => 'Option 1', 'option2' => 'Option 2', 'option3' => 'Option 3');
$myselect = 'option2';
?>
<select name="myselect">
<?php
foreach($options as $key => $value) {
echo sprintf('<option value="%s" %s>%s</option>', $key, $key == $myselect ? 'selected="selected"' : '', $value);
}
?>
</select>
Если вы делаете такие вещи регулярно, это намного аккуратнее в функции или вы даже можете создать помощник класса формы.
вот основная функция выбора:
<?php
function form_select($name, $options, $selected) {
$html = sprintf('<select name="%s">', $name);
foreach($options as $key => $value) {
$html .= sprintf('<option value="%s"', $key);
if ($selected == $key)
$html .= ' selected="selected"';
$html .= sprintf('>%s</option>', $value);
}
$html .= '</select>';
return $html;
}
затем вы можете создать любой выбор, просто позвонив:
echo form_select('myselect', $options, $selected);
вы можете easiliy сделать функцию обрабатывать дополнительные атрибуты, такие как стиль, класс и идентификатор.
<input type="radio" name="xxxx" <?php if ($xxx == 'VALUE') echo "checked=\"checked\""; ?>" />
аналогично с опцией в select