Php 在每个字段旁边显示表单验证错误

Php 在每个字段旁边显示表单验证错误,php,forms,validation,Php,Forms,Validation,我正在用php编写一个简单的联系人表单,几乎所有的设置都是我想要的,除了现在,所有的验证错误都显示在表单顶部的一个div中,我想更改下面的代码,以便它们显示在导致错误的表单字段旁边,但我不知道如何做到这一点,所以我来到专家那里寻求一些建议 PHP验证例程 $frm_valid = new Validate(); if(isset($_POST['submit'])){ $rules=array( array('Type'=>'Required','Var'=>$_POST

我正在用php编写一个简单的联系人表单,几乎所有的设置都是我想要的,除了现在,所有的验证错误都显示在表单顶部的一个div中,我想更改下面的代码,以便它们显示在导致错误的表单字段旁边,但我不知道如何做到这一点,所以我来到专家那里寻求一些建议

PHP验证例程

$frm_valid = new Validate();

if(isset($_POST['submit'])){

$rules=array(
    array('Type'=>'Required','Var'=>$_POST['name'],'Msg'=>'Name field is required.'),
    array('Type'=>'Required','Var'=>$_POST['email'],'Msg'=>'Email address field is required.'),
    array('Type'=>'Email','Var'=>$_POST['email'],'Msg'=>'Your email address format is invalid.'),
    array('Type'=>'Required','Var'=>$_POST['subject'],'Msg'=>'Subject field is required.'),
    array('Type'=>'Required','Var'=>$_POST['message'],'Msg'=>'Message field is required.'),
);


$result = $frm_valid->Valid($rules);

if(is_array($result)){
    // Print validation errors (if any)
    echo('<div"><b>The form cannot be submitted until the following errors are corrected.</b><ul>');

    foreach($result as $key=>$val){
      echo '<li>'.$val.'</li>';
    }
    echo('</ul></div><br />');
  } 
  else {
    // Do something else.
  }
}
$frm_valid=new Validate();
如果(isset($_POST['submit'])){
$rules=数组(
数组('Type'=>'Required','Var'=>$\u POST['name'],'Msg'=>'name字段是必需的'),
数组('Type'=>'Required','Var'=>$\u POST['email'],'Msg'=>'email address字段是必需的'),
数组('Type'=>'Email','Var'=>$\u POST['Email'],'Msg'=>'您的电子邮件地址格式无效'),
数组('Type'=>'Required','Var'=>$\u POST['subject'],'Msg'=>'subject字段为必填项'),
数组('Type'=>'Required','Var'=>$\u POST['message'],'Msg'=>'message字段是必需的'),
);
$result=$frm\u valid->valid($rules);
if(是_数组($result)){
//打印验证错误(如果有)

echo(“您需要为此更改整个代码!!!结构,可能是这样:

<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>">
    <ul>
        <li>
            <label>
                <span>Name</span>
                <input type="text" name="name" />
                <small class="errorText"><?php echo ($_POST["name"] == "") ? "This field is required" : ""; ?></small>
            </label>
        </li>
        <li>
            <label>
                <span>Email</span>
                <input type="text" name="email" />
                <small class="errorText"><?php echo ($_POST["email"] == "") ? "This field is required" : ""; ?></small>
            </label>
        </li>
        <li>
            <label>
                <span>Subject</span>
                <input type="text" name="subject" />
                <small class="errorText"><?php echo ($_POST["subject"] == "") ? "This field is required" : ""; ?></small>
            </label>
        </li>
        <li>
            <label>
                <span>Message</span>
                <textarea name="message" cols="80" rows="7"></textarea>
                <small class="errorText"><?php echo ($_POST["message"] == "") ? "This field is required" : ""; ?></small>
            </label>
        </li>
        <li>
            <input type="submit" name="submit" value="Send" />
        </li>
    </ul>
</form>
<small class="errorText"><?php echo $error["name"]; ?></small>
<small class="errorText"><?php echo $error["email"]; ?></small>
您可以在此处看到现场演示:

PHP中的错误处理 为每个字段保留一个错误变量。例如

<?php
    $error = array(
        "name" => "",
        "email" => "",
        "subject" => "",
        "message" => ""
    );
?>

用错误更新它们并在下面显示它们

<?php
    if (empty()$_POST["email"])
        $error["email"] = "Email is required!";
    elseif (!isEmail($_POST["email"]))
        $error["email"] = "Not a Valid Email!";
?>

如果没有错误,它将是空的,并且用户看不到错误消息。在表单代码中,您只需按以下方式更新:

<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>">
    <ul>
        <li>
            <label>
                <span>Name</span>
                <input type="text" name="name" />
                <small class="errorText"><?php echo ($_POST["name"] == "") ? "This field is required" : ""; ?></small>
            </label>
        </li>
        <li>
            <label>
                <span>Email</span>
                <input type="text" name="email" />
                <small class="errorText"><?php echo ($_POST["email"] == "") ? "This field is required" : ""; ?></small>
            </label>
        </li>
        <li>
            <label>
                <span>Subject</span>
                <input type="text" name="subject" />
                <small class="errorText"><?php echo ($_POST["subject"] == "") ? "This field is required" : ""; ?></small>
            </label>
        </li>
        <li>
            <label>
                <span>Message</span>
                <textarea name="message" cols="80" rows="7"></textarea>
                <small class="errorText"><?php echo ($_POST["message"] == "") ? "This field is required" : ""; ?></small>
            </label>
        </li>
        <li>
            <input type="submit" name="submit" value="Send" />
        </li>
    </ul>
</form>
<small class="errorText"><?php echo $error["name"]; ?></small>
<small class="errorText"><?php echo $error["email"]; ?></small>


在后端,
$error[“email”]
可能会有
“此字段是必需的”
“不是有效的电子邮件地址!”
,如果每个字段都有一个错误,可以使用以下方法:

  <input name='myfield'>
     @if ($errors->has('myfield'))
        <span style="color:red;">
            {{ $errors->first('myfield') }}
        </span>
     @endif

@如果($errors->has('myfield'))
{{$errors->first('myfield')}
@恩迪夫

因此,无法更改foreach循环以回显导致错误的表单字段旁边的错误消息。我之所以这样问,是因为我使用的是一个自定义验证类,我的站点依赖该类进行所有表单验证,而改变整个系统的工作方式只是为了获得错误,这将是一项非常艰巨的任务或消息,以显示我希望它们如何显示。这非常好。我喜欢字段和错误包装在标签中,以便单击错误集中在字段上。我想补充的是,如果错误只是通过CSS隐藏,表单通过JS或AJAX验证,并且消息在适当的时候显示,那么将更好、更现代te,而不是重新加载表单。@nosx-如果您的系统使用验证类,我会通过ajax请求它们,并插入它们,如Praveen的示例所示。问题是您的PHP被锁定了,还是前端?@nosx您需要在输入标记后有某种元素。您不需要更新PHP代码。只需要HTML代码即可我会的,因为你会把错误信息放在这里吗?代码
起作用。不需要改变for循环,事实上,也不需要触摸它!!!使用html5的验证可行吗?类似这样的
http://www.the-art-of-web.com/html/html5-form-validation/
我的网站上仍然有很多使用IE7的访问者(谁知道为什么)所以HTML5解决方案在这里是不可能的。我希望它是那么简单。