Моя форма отлично работает с проверками, выполняемыми 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>
Любая помощь будет отличной.
Спасибо.
Попробуйте изменить свой тег:
<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'] : '' ?>" />
что-то вроде этого.