Intereting Posts
Зависимость от инъекции и блок работы Разделить строку для формирования многомерных ключей массива? Создание защищенного паролем загружаемого файла на веб-странице неявное объявление переменной класса в php? Как получить доступ к PHP-методам внутри Javascript? Загрузка изображения, ajax, php, mysql Простая проблема кодирования символов html dom Определить вызов постоянной функции «Найти ближайшее место» по почтовому индексу? Заказать многомерный массив рекурсивно на каждом уровне PHP Функция fmod возвращает неверный результат php – Различия между копиями, переименованием и move_uploaded_file Как удалить каждый третий элемент в php-массиве до тех пор, пока останется только один элемент и не напечатает этот элемент? Устранение неполадок «Ошибка разделителя не должна быть буквенно-цифровой или обратной косой чертой» при изменении ereg () на preg_match () Получение данных с помощью JQuery, AJAX и PHP из базы данных MySQL

Входные значения, потерянные при отправке формы с ошибками

Моя форма отлично работает с проверками, выполняемыми PHP. У меня есть три поля: Name, EMail и Message. Форма и PHP-код находятся в одной и той же pgae, та же страница вызывается для проверки, когда пользователь отправляет форму.

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

До этого он работает нормально.

Однако проблема заключается в том, что пользователь заполнил какое-либо поле, например, зарегистрированное имя и оставил два других поля (EMail и Message) пустым, затем при подаче он выдает сообщения об ошибках для пустых полей, которые соответствуют окну, но для поля имени который был заполнен пользователем, он пуст содержимое и показывает пустое поле имени и не показывает ошибку (как ранее пользователь заполнил ее).

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

    Ниже приведен код проверки PHP.

    <?php error_reporting(E_ALL & ~E_NOTICE); if(isset($_POST['nameField_Name']) AND isset($_POST['nameField_EMail']) AND isset($_POST['nameField_Message']) AND isset($_POST['nameSubmit'])){ // Form Submited if ($_POST['nameField_Name']) { $phpVarNameField = mysql_escape_string($_POST['nameField_Name']); } else { $errormsgNameField = "Name field is required, Please enter your Name."; } if ($_POST['nameField_EMail']) { $phpVarEMailField = mysql_escape_string($_POST['nameField_EMail']); } else { $errormsgEMailField = "E-Mail field is required, Please enter your E-Mail ID."; } if ($_POST['nameField_Message']) { $phpVarMessageField = mysql_escape_string($_POST['nameField_Message']); } else { $errormsgMessageField = "Message field is required, Please enter your Message."; } } ?> 

    Ниже приведен код формы.

      <form name="myform" action="contactus.php" method="post""> <div id="r1"> <div id="r1c1"> <input type="text" name="nameField_Name" id="idField_Name" placeholder="Enter your name here"/> </div> <div id="r1c2"> <?php if(isset($errormsgNameField)){ // Check if $msg is not empty echo '<img src="error.png" width="45" height="45" style="margin: 5px 0px" alt="">'; } ?> </div> </div> <div id="afterr1"> <?php if(isset($errormsgNameField)){ // Check if $msg is not empty echo '<div class="statusmsg" id="idErrorMsgNameField">'.$errormsgNameField.'</div>'; // Display our message and wrap it with a div with the class "statusmsg". } ?> </div> <div id="r2"> <div id="r2c1"> <input name="nameField_EMail" type="text" id="idField_EMail" placeholder="Enter your E-Mail address here" /> </div> <div id="r2c2"> <?php if(isset($errormsgEMailField)){ // Check if $msg is not empty echo '<img src="error.png" width="45" height="45" style="margin: 5px 0px" alt="">'; } ?> </div> </div> <div id="afterr2"> <?php if(isset($errormsgEMailField)){ // Check if $msg is not empty echo '<div class="statusmsg" id="idErrorMsgEMailField">'.$errormsgEMailField.'</div>'; // Display our message and wrap it with a div with the class "statusmsg". } ?> </div> <div id="r3"> <div id="r3c1"> <textarea name="nameField_Message" id="idField_Message" placeholder="Enter your message for us here"></textarea> </div> <div id="r3c2"> <?php if(isset($errormsgMessageField)){ // Check if $msg is not empty echo '<img src="error.png" width="45" height="45" style="margin: 115px 0px" alt="">'; } ?> </div> </div> <div id="afterr3"> <?php if(isset($errormsgMessageField)){ // Check if $msg is not empty echo '<div class="statusmsg" id="idErrorMsgMessageField">'.$errormsgMessageField.'</div>'; // Display our message and wrap it with a div with the class "statusmsg". } ?> </div> <div id="r4"> <div id="r4c"> <input type="Submit" name="nameSubmit" id="idButton_Submit" value="Submit" alt="Submit Button"/> </div> </div> </form> 

    Любая помощь будет отличной.

    Спасибо.

    Related of "Входные значения, потерянные при отправке формы с ошибками"

    Попробуйте изменить свой тег:

     <input type="text" name="nameField_Name" id="idField_Name" placeholder="Enter your name here" value ="<?php if (isset($phpVarNameField)) echo $phpVarNameField; ?>" /> ....... <input name="nameField_EMail" type="text" id="idField_EMail" placeholder="Enter your E-Mail address here" value ="<?php if (isset($phpVarEMailField)) echo $phpVarEMailField; ?>" /> ....... <textarea name="nameField_Message" id="idField_Message" placeholder="Enter your message for us here" value ="<?php if (isset($phpVarMessageField)) echo $phpVarMessageField; ?>" ></textarea> 

    Удачи !

    Вам нужно будет добавить атрибут value на элементы <input> :

     <input type="text" name="whatever" value="<?php echo htmlspecialchars($_POST['whatever']); ?>" > 

    Это может быть проще читать, если PHP выводит поле:

     <?php printf('<input type="text" name="%s" value="%s">', 'whatever', htmlspecialchars($_POST['whatever'])); ?> от <?php printf('<input type="text" name="%s" value="%s">', 'whatever', htmlspecialchars($_POST['whatever'])); ?> 

    Это может даже быть обернуто в функцию, поэтому вам не нужно вводить ее для каждого отдельного поля формы.

    Обратите внимание на вызов htmlspecialchars . Это необходимо, чтобы < и > и кавычки не уничтожали ваш HTML-документ.

    Ну, вы можете сделать валидацию с помощью плагина проверки jQuery – легко и удобно. Плагин jQuery

    Или с PHP хранят данные POST в массиве, проверяйте наличие ошибок и полей, которые не пусты, как значение для ввода текста.

     if (isset($_POST)) { $data = $_POST; } foreach ($data as $row) { if ($row == "") $error = true; // do what ever you want } and then in form <input type="text" name="name" value="<?php ($data['name'] != "")? $data['name'] : '' ?>" /> 

    что-то вроде этого.