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


PHP Triggering two if statements in one line

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

使用 && 运算符检查这两个条件

<?php
 if ($err_sname === '' && $err_fname === ''){
    // Continue here
  }
?>

根据我的经验,将错误和消息累积在列表中并在需要时回显它们总是好的。这样,您还可以在不同的类和函数之间传递它们。

<?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;
 }
?>

试一试:

<?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;