Как запомнить флажок ввода в PHP Forms - PullRequest
3 голосов
/ 22 марта 2010

Для удобства использования мне нравится настраивать поля формы следующим образом:

<?php

$username = $_POST['username'];
$message  = $_POST['message'];

?>

<input type="text" name="username" value="<?php echo $username; ?>" />

<textarea name="message"><?php echo $message; ?></textarea>

Таким образом, если пользователь не пройдет проверку, введенный ранее ввод формы все равно будет там, и не нужно будет начинать с нуля.

Моя проблема в том, что я не могу оставить флажки с опцией, выбранной пользователем ранее (когда страница обновляется после сбоя проверки). Как это сделать?

Ответы [ 7 ]

5 голосов
/ 22 марта 2010

Мое первое предложение - сначала использовать проверку на стороне клиента. Возможно, вызов AJAX, который выполняет проверки перед продолжением.

Если это не вариант, попробуйте следующее:

<input type="checkbox" name="subscribe" <?php echo (isset($_POST['subscribe'])?'checked="checked"':'') ?> />

Так что, если subscribe = 1, тогда вам следует выбрать этот флажок.

3 голосов
/ 20 сентября 2014

Например, рассмотрим следующий код для флажка: -

<label for="course">Course:</label>
PHP<input type="checkbox" name="course[]" id="course" <?php if ((!empty($_POST["course"]) && in_array("PHP", $_POST["course"]))) {
echo "checked";
} ?> value="PHP" />

Тогда будет запомнен флажок «PHP», если он установлен, даже если проверка страницы не пройдена и т. Д. Для числа «n» флажков, как показано ниже: -

<label for="course">Course:</label>
        PHP<input type="checkbox" name="course[]" id="course" <?php if ((!empty($_POST["course"]) && in_array("PHP", $_POST["course"]))) {
echo "checked";
} ?> value="PHP" />
        HTML<input type="checkbox" name="course[]" id="course" <?php if     ((!empty($_POST["course"]) && in_array("HTML", $_POST["course"]))) {
echo "checked";
} ?> value="HTML" />
        CSS<input type="checkbox" name="course[]" id="course" <?php if ((!empty($_POST["course"])     && in_array("CSS", $_POST["course"]))) {
echo "checked";
} ?> value="CSS" />
        Javascript<input type="checkbox" name="course[]" id="course" <?php if     ((!empty($_POST["course"]) && in_array("Javascript", $_POST["course"]))) {
echo "checked";
} ?> value="Javascript" />

И самое главное, не забудьте объявить переменную "course" как массив в начале кода, как показано ниже: -

$course = array();
1 голос
/ 10 мая 2011

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

Я создал следующий код, и он работает просто отлично. Я не хотел проходить весь этот CSS и глубокое кодирование, так что ...

КОД В PHP

$arrival = ""; //focus here.. down
if($row['new_arrival']==1) /*new_arrival is the name of a column on my table that keeps the value of check box*/
{$arrival="checked";}// $arrival is a variable
else
{$arrival="";};
echo $arrival;

<b><label for ="checkbox">New Arrival</label></b>&nbsp;&nbsp;&nbsp;
<input type="checkbox" name ="$new_arrival" value="on" '.$arrival.' /> &nbsp;(Tick box if product is new) <BR><BR>
0 голосов
/ 21 декабря 2012

Мой массив имеет значения name="radioselection" и value="1", value="2" и value="3" соответственно и является массивом переключателей ... как проверить, выбрано ли значение радио с использованием этого кода Я попробовал:

<?php echo (isset($_POST['radioselection']) == '1'?'checked="checked"':'') ?> />
0 голосов
/ 22 марта 2010

Вы можете добавить это к своей форме:

<input type="checkbox" name="mycheckbox" <?php echo isset($_POST['mycheckbox']) ? "checked='checked'" : "" ?> />

isset проверяет, установлена ​​ли переменная и не является ли она нулевой. Таким образом, в этом коде checked будет добавлено к вашему флажку, только если соответствующая переменная $_POST имеет значение ..

0 голосов
/ 22 марта 2010

Когда браузер отправляет форму с установленным флажком, он отправляет переменную с именем из атрибута name и значением из атрибута value. Если флажок не установлен, браузер ничего не отправляет для флажка. На стороне сервера вы можете справиться с этой ситуацией с помощью array_key_exists(). Например:

<?php
$checkedText = array_key_exists('myCheckbox', $_POST) ? ' checked="checked"' : '';
?>
<input type="checkbox" name="myCheckbox" value="1"<?php echo $checkedText; ?> />

Использование array_key_exist() позволяет избежать потенциального индекса массива неопределенного предупреждения, которое будет выдано, если попытаться получить доступ к $_POST['myCheckbox'], а оно не существует.

0 голосов
/ 22 марта 2010
<input type="checkbox" name="somevar" value="1" <?php echo $somevar ? 'checked="checked"' : ''; ?>/>

Также, пожалуйста, рассмотрите вопрос дезинфекции ваших входных данных, поэтому вместо:

$somevar = $_POST['somevar'];

... лучше использовать:

$somevar = htmlspecialchars($_POST['somevar']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...