Передача отправленной информации формы обратно в поле ввода? - PullRequest
0 голосов
/ 16 июня 2009

Я написал простую форму ввода, которая собирает информацию в базу данных, и у меня возникают проблемы с моими обязательными полями ...

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

Как передать информацию обратно на метку ввода? Есть ли простой способ сделать это без сумасшедших сценариев? Я начал с сеансов, но понял, что понятия не имею, как поместить хранимую информацию из сеанса обратно в поле ввода, чтобы пользователю не приходилось перепечатывать всю свою информацию ... Также будет ли лучше файл cookie для этого в течение сеанса?

Спасибо, ребята,

Arthur

Ответы [ 6 ]

3 голосов
/ 16 июня 2009

Когда вы публикуете форму, все эти переменные отправляются в глобальный массив с именем $ _POST ['input_name'] и доступны на странице, размещенной на. Много раз, что мне нравится делать, если я делаю это довольно быстро, это просто сделать значение этих полей ввода равным тому, что будет публиковать.

Например, допустим, у нас есть желаемое поле имени пользователя, но форма по какой-то причине не прошла проверку и отправлена ​​обратно самому себе; мы не хотим, чтобы они вводили его снова:

<input type="text" name="username" value="<?php print $_POST['username']; ?>" />

Конечно, когда они впервые загружают страницу, значение будет пустым, поэтому там ничего нет, но если по какой-то причине оно отправляет ответное сообщение, это поле «username» уже будет содержать введенную информацию.

Еще лучше проверка сценариев Java, так как форма не должна отправлять обратно, но это отлично справится с работой!

2 голосов
/ 16 июня 2009

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

<input id="myid" name="myid" type="text" 
   <?php echo !empty($_POST['myid'] ? "value=\"{$_POST['myid']}\"" ?> />

Для переключателей выберите опции и флажки, вместо которых вам нужно проверить значение, чтобы увидеть, соответствует ли оно записи, которую вы выводите в данный момент, и напечатать selected = "selected" .

Когда дело доходит до проверки, у вас также может быть проверка JavaScript, чтобы быстрее дать отзыв пользователю о возможных сбоях. Просто не забудьте провести ту же проверку на стороне сервера на тот случай, если кто-то не включил JavaScript или отправит его с помощью JavaScript, таким образом обходя проверку на стороне клиента.

1 голос
/ 16 июня 2009

Я проверяю, установлено ли значение сообщения, в противном случае вы можете показать значение по умолчанию, а затем использовать бит jQuery, чтобы удалить его, когда ввод имеет фокус

<input type="text" name="first_name" id="first_name" value="<?php if(isset($_POST['myid'])) {   echo $_POST['myid'] } else { echo "Your Name" ?>"></input>

Вот jQuery, который удалит ваше имя по умолчанию, когда текстовое поле имеет фокус.

$(document).ready(
function(){
    $.fn.clearDefault = function() {
        return this.focus(function() {
            if( this.value == this.defaultValue ) {
                this.value = "";
            }
        }).blur(function() {
            if( !this.value.length ) {
                this.value = this.defaultValue;
            }
        });
    };
    // clear default textbox entries
    $("#first_name"). clearDefault();
}

);

1 голос
/ 16 июня 2009

Не уверен, что это лучший способ, но вы можете перенаправить на страницу «перезагрузки» и использовать значения из POST или GET для повторного ввода существующих полей. Поэтому сначала проверьте, какие поля обязательны для заполнения и, если они отсутствуют, перенаправьте на эту страницу. Тогда POST или GET будут иметь все значения, которые пользователь заполнил (а пропущенные обязательные поля уже будут пустыми), поэтому вы просто просматриваете и загружаете предоставленную информацию. Кроме того, если они предоставили неверную информацию, вы можете очистить ее вручную, что также позволит вам отметить пропущенные обязательные поля.

Другой вариант - поместить вашу проверку в JS, чтобы вы знали, что данные верны, прежде чем отправлять. Однако я не уверен, есть ли проблемы безопасности с этим или нет.

0 голосов
/ 19 марта 2012
<input type="text" name="username" value="<?php isset($_POST['username']) ? echo $_POST['username'] : null; ?>" />

будет работать нормально

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