我正在努力使用两个if语句来验证两个输入字段并在一行中显示它们下面的错误消息。我使用了两个if语句,但是当我输入一个输入字段时,另一个错误文本消息就消失了。我试图使用if,else语句但不幸的是它只显示了一条错误消息而不是两条。这是我的代码片段
if ($fname == '') :
$err_name = '<div class="error1">Please enter your first name</div>'; endif;
if ($sname == '') :
$err_sname = '<div class="error3">Please enter your surname</div>'; endif;
这是我的HTML代码的正文......
<span class=="error"><span>
<label for="Firstname" class="label">First Name:</label> <input name="Firstname" id="Firstname" onfocus="form; clrfirst()" placeholder="Letters only" type="text" size="20" value = "<?php if (isset($fname)){ echo $fname; } ?>" /><!-- first name input field -->
<label for="Surname" class="surname">Surname:</label>
<input name="Surname" id="Surname" onfocus="form; clrsurname()" placeholder="Letters only" type="text" size="20" value = "<?php if (isset($sname)){ echo $sname; } ?>" />
现在是最重要的员工
<?php if (isset($err_sname)) {echo $err_sname; } ?><?php if (isset($err_name)) {echo $err_name; } ?>
</div>
我希望必须有一个简单的解决方案,但我不太了解PHP语法。欢迎任何帮助!
答案 0 :(得分:2)
使用&&
operator检查两种情况
<?php
if ($err_sname === '' && $err_fname === ''){
// Continue here
}
?>
答案 1 :(得分:1)
根据我的经验,总是很好地在列表中累积错误和消息并在需要时回显它们。这样,您也可以在不同的类和函数之间传递它们。
<?php
$err = array();
if ( empty($fname) ) {
$err[] = '<div class="error1">Please enter your first name</div>';
}
if ( empty($sname) ) {
$err[] = '<div class="error3">Please enter your surname</div>';
}
foreach( $err as $e ) {
echo $e;
}
?>
答案 2 :(得分:0)
尝试一下:
<?php
// This assumes that $fname and $sname are at least defined at some point
if ($fname == '' || $sname == '') :
// If $fname is set but equal to '', then '<div class="error1">..</div>', otherwise FALSE
$err_name = (isset($fname) && $fname == '') ? '<div class="error1">Please enter your first name</div>' : FALSE;
// If $sname is set but equal to '', then '<div class="error3">..</div>', otherwise FALSE
$err_sname = (isset($sname) && $sname == '') ? '<div class="error3">Please enter your surname</div>' : FALSE;
endif;