PHP在一行中触发两个if语句

时间:2013-11-10 01:02:44

标签: php

我正在努力使用两个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语法。欢迎任何帮助!

3 个答案:

答案 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;