0

以下の私のコードは、入力されていないフィールドがあるかどうかをチェックし、検証をチェックします。問題は、エラーがない場合でも最初のerror_messageを表示します。=

例えば

$error_message .= "<div class=\"error-header\">Error: You did not submit the following required information.</div>";
    $error_message .= "<ul id=\"errors\">"
// this part in the second else statement always shows how do i stop that;

ここに完全なコード:

if((!$email_address)||(!$password)||(!$confirm_password)||(!$first_name)||(!$last_name)||(!$address)||(!$postal_code)||(!$region)||(!$country)) {           
        $error_message .= "<div class=\"error-header\">Error: You did not submit the following required information.</div>";
        $error_message .= "<ul id=\"errors\">";
        if(!$email_address) {
            $error_message .= "<li>Please enter you're email address.</li>";
        }
        etc...
}else {
        $error_message .= "<div class=\"error-header\">Error: The following information is invalid.</div>";
        $error_message .= "<ul id=\"errors\">";

        if($row_count > 0) {
            $error_message .= "<li>The email address you provided is already in use, please use another email address.</li>";
        }

        if($confirm_password != $password) {
            $error_message .= "<li>The passwords do not match.</li>";   
        }

        if(!isset($_POST["interests"]) || count($_POST["interests"]) < 3) {
            $error_message .= "<li>Please choose three departments that are of interest to you.</li>";                              
        }else{
            $interests = $_POST["interests"];
        }

        if(strtolower($captcha_code) == strtolower((string)$_SESSION["captcha"])) {
            $error_message .= "<li>The code you entered is incorrect.</li>";    
        }

        $error_message .= "</ul>";
     }
4

3 に答える 3

2

コードを少し変更しました:

if((!$email_address)||(!$password)||(!$confirm_password)||(!$first_name)||(!$last_name)||(!$address)||(!$postal_code)||(!$region)||(!$country)) {           
            $error_message .= "<div class=\"error-header\">Error: You did not submit the following required information.</div>";
            $error_message .= "<ul id=\"errors\">";
            if(!$email_address) {
                $error_message .= "<li>Please enter you're email address.</li>";
            }
            etc...
    }else {

            $error_message=""; 

            if($row_count > 0) {
                $error_message .= "<li>The email address you provided is already in use, please use another email address.</li>";
            }

            if($confirm_password != $password) {
                $error_message .= "<li>The passwords do not match.</li>";   
            }

            if(!isset($_POST["interests"]) || count($_POST["interests"]) < 3) {
                $error_message .= "<li>Please choose three departments that are of interest to you.</li>";                              
            }else{
                $interests = $_POST["interests"];
            }

            if(strtolower($captcha_code) == strtolower((string)$_SESSION["captcha"])) {
                $error_message .= "<li>The code you entered is incorrect.</li>";    
            }

             //check if there is any error message, then create the div
             if(!empty($error_message))
            {
               $errorMessageLi=$error_message;
               $error_message= "<div class=\"error-header\">Error: The following information is invalid.</div>";
              $error_message .= "<ul id=\"errors\">";

              $error_message .=  $errorMessageLi;

              $error_message .= "</ul>";
            }
         }
于 2013-02-16T04:37:08.813 に答える
0

それは常に実行されているように私には見えます。表示されるタイミングを制御する必要が$error_messageあります(ここには表示されていません)。または、elseブロックにチェックを入れて、これらのifステートメントのいずれかに実際にヒットしたかどうかを確認する必要があります。

if (!($row_count = 0) && !($confirm_password != $password) && ...) {$error_message .= "";}

それはそれを行うための不格好な方法でしょう。最後にかなり簡単にチェックして、追加されているかどうかを確認し、<li>追加されていない場合はクリアすることができます。または、カウンター変数を入れて、各ifブロックでインクリメントします(trueの場合)。

于 2013-02-16T04:29:56.883 に答える
0

私はそのようなことのために配列を使う傾向があります:

$errors = array();

if (condition1) {
   $errors[] = 'condition 1 was not met';
}

if (condition2) {
  $errors[] = 'condition 2 was not met';
}
etc...

if (count($errors) > 0) {
   display error messages
}
于 2013-02-16T04:42:07.220 に答える