Как «запомнить» выбранные значения формы в PHP? - PullRequest
6 голосов
/ 04 марта 2011

Если пользователь не проходит проверку формы, то для облегчения для него мы можем сделать это:

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 и checkbox?

Ответы [ 3 ]

1 голос
/ 04 марта 2011

Вот пример кода.

<?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>

Если вы делаете такие вещи регулярно, это намного более аккуратно в функции, или вы могли бы даже создать помощник класса Form.

Вот основная функция выбора:

<?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);

Вы можете легко заставить функцию обрабатывать другие атрибуты, такие как стиль, класс и идентификатор.

1 голос
/ 04 марта 2011

Он работает так же, но потребует дополнительной работы:

<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.

0 голосов
/ 04 марта 2011
<input type="radio" name="xxxx" <?php if ($xxx == 'VALUE') echo "checked=\"checked\""; ?>" />

аналогично опции в select

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