如果提交表单,则显示错误

时间:2014-05-18 13:53:52

标签: php forms

我希望我的表单显示错误,例如"输入名字"如果该字段尚未填写。我必须使用正确的代码(我认为)来执行此操作,但它在首次加载页面时显示错误。我希望在提交表单时显示它。

    <div class="Row">
<div class="Lable">First Name:</div> <!--End of Lable-->
<div class="input">
<input type="text" id="firstname" class="detail" name="firstname" placeholder="First Name"  />
</div> <!--End input-->
</div> <!--End row-->
<span class="error">* <?php echo $nameErr;?></span>

PHP验证是

 if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["firstname"])) {
 $nameErr = "Name is required";
} else {
 $firstname = test_input($_POST["name"]);
 // check if name only contains letters and whitespace
 if (!preg_match("/^[a-zA-Z ]*$/",$firstname)) {
   $nameErr = "Only letters and white space allowed"; 
 }
}

由于

3 个答案:

答案 0 :(得分:1)

我会用 PHP JavaScript

仔细检查表单

对于javascript部分,将此行添加到表单中,因此函数validate()将在表单内容发送到服务器之前运行。

<form onsubmit="validate()">

然后你可以像这样在你的文档中添加一个javascipt函数:

function validate() {
  if (/*check if fields are filled out properly*/) {
    this.submit();
  } else {
    // show message here when fields are missing

    return false; // this line is important otherwise the form gets submitted anyway
  }
}

对于PHP部分,用isset()

检查不同的字段就足够了

这看起来像这样:

$formOK = true;
if (!isset($_POST["field-name-1"]) || $_POST["field-name-1"] == "") {
  echo "field-1 is missing";
  $formOK = false
}
if (!isset($_POST["field-name-2"]) || $_POST["field-name-2"] == "") {
  echo "field-2 is missing";
  $formOK = false
}

if (formOK) {
  echo "everything is fine";
  // do something with your form data
}

仔细检查绝对是最好的方法,因为首先你没有这么多的请求,javascript在反应和速度方面更灵活,但PHP会为你提供保证不会出错。

答案 1 :(得分:0)

试试:

if (isset($nameErr)) {
    echo '<span class="error">* ' . $nameErr . '</span>';
}

答案 2 :(得分:0)

为了仅在提交表单时应用验证,您可以检查是否以这种方式收到$_POST['submit']

<?php
    $nameError="";

    if(isset($_POST['submit']))
    {
        //validate the form
        if(condition is not met){ $nameError="your error message"; }
    }
?>

<form>
    ...
    <input type="text" name="firstname"/>
    <input type="submit" name="submit"/>
    <span class="myError">* <?=$nameError?> </span>
</form>

此处,提交按钮将发送$_POST['submit']。开头的错误消息为空。如果有错误,请更改它。然后<?=$nameError?>将显示它是否为空。

相关问题