Php 在每个字段旁边显示表单验证错误
我正在用php编写一个简单的联系人表单,几乎所有的设置都是我想要的,除了现在,所有的验证错误都显示在表单顶部的一个div中,我想更改下面的代码,以便它们显示在导致错误的表单字段旁边,但我不知道如何做到这一点,所以我来到专家那里寻求一些建议 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
$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解决方案在这里是不可能的。我希望它是那么简单。