0

2 つの入力フィールドを検証し、その下にエラー メッセージを 1 行で表示する 2 つの if ステートメントに苦労しています。2 つの if ステートメントを使用しましたが、1 つの入力フィールドに入力するとすぐに、もう 1 つのエラー テキスト メッセージが表示されなくなりました。if、else ステートメントを使用しようとしましたが、残念ながら、エラー メッセージが 2 つではなく 1 つしか表示されませんでした。ここに私のコードスニペットがあります

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 の構文がよくわかりません。どんな助けでも大歓迎です!

4

3 に答える 3

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

?>
于 2013-11-10T01:45:43.110 に答える
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;
于 2013-11-10T08:57:49.563 に答える