当表单提交有错误的输入值丢失(Input values lost when form submitt

2019-09-18 15:49发布

与验证是由PHP做了我的形式是工作的罚款。 我有三个字段:姓名,电子邮件和消息。 形式和PHP代码是相同的PGAE内,当用户提交表单同一页面要求验证。

当用户提交表单,同一页面被调用,它会检查是否在表单提交与否。 如果表单提交它,然后做了验证的空白项,并抛出下面的字段错误消息,通知字段为空的用户。 它还显示字段旁边的错误图标。

直到这一点,它工作正常。

然而,问题是用户是否已经填充任何字段中,日提交的例如名称和左其他两个字段(电子邮件和消息)空白,然后在submittion,它引发的错误消息空白字段这是好的,但对于名称字段这是由用户填写它清空内容,并显示空白名称字段不显示错误(如前面的用户曾经充满它)。

我唯一担心的是,当relods提交后的形式,也应该重新加载在各自的领域,其之前提交用户输入以前的值。

下面是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>

任何帮助将是这个伟大。

谢谢。

Answer 1:

试着改变你的标签,如:

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

祝好运 !



Answer 2:

您将需要添加一个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']));
?>

这甚至可以被包裹在一个功能,所以您不必重新输入它为每一个表单字段。

注意调用用htmlspecialchars 。 这是必须的,从而<>和报价不破坏你的HTML文档。



Answer 3:

好了,你可以做的验证与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'] : '' ?>" />

这样的事情。



文章来源: Input values lost when form submitted with errors