0

これは、関数ページで多くの行を使用している関数です。

それらを配列に入れてからforeachループを使用しない限り、それを削除する方法を理解することはできません。しかし、空白にできないものについて具体的に説明したいと思います。

if ($EmployeeID === "")
{
  echo "EmployeeID Is Blank.";

}
else
{
  if ($Firstname === "")
  {
    echo "Firstname Is Blank.";
  }
  else
  {
    if ($Lastname === "")
    {
      echo "Last Name Is Blank";

    }
    else
    {
      if ($PhoneNumber === "")
      {
        echo "Phone Number Is Blank";

      }
      else
      {
        if ($Address === "")
        {
          echo "Address Is Blank";

        }
        else
        {
          if ($City === "")
          {
            echo "City Is Blank";

          }
          else
          {
            if ($State === "")
            {
              echo "Sate Is Blank";

            }
            else
            {
              if ($Zip === "")
              {
                echo "Zip Is Blank";

              }
              else
              {
                if ($Email === "")
                {
                  echo "Email Is Blank";

                }
                else
                {
                  if ($Password === "")
                  {
                    echo "Password Is Blank";

                  }
                  else
                  {
                    echo "All Success";
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

私が見つけた解決策は、行を削除しますが、どのフィールドが空のままになっているのか正確にはわかりません。

$Array = array();
$Array[] = $EmpID;
$Array[] = $FirstName;
$Array[] = $Lastname;
$Array[] = $PhoneNumber;
$Array[] = $Address;
$Array[] = $City;
$Array[] = $State;
$Array[] = $Zip;
$Array[] = $Email;
$Array[] = $Password;   
foreach ($Array AS $Checking) 
{
  if (empty($Checking))
  {
    echo "One Or More Is Left Blank"; 
    exit;
  }
}
4

7 に答える 7

5
try{
    if(empty($EmployeeID)){
        throw new Exception('EmployeeID Is Blank.');
    }elseif(empty($Firstname)){
        throw new Exception('Firstname Is Blank.');
    }elseif(empty($Lastname)){
        throw new Exception('Lastname Is Blank.');
    }elseif(empty($PhoneNumber)){
        throw new Exception('PhoneNumber Is Blank.');
    }elseif(empty($Address)){
        throw new Exception('Address Is Blank.');
    }elseif(empty($City)){
        throw new Exception('City Is Blank.');
    }elseif(empty($State)){
        throw new Exception('State Is Blank.');
    }elseif(empty($Zip)){
        throw new Exception('Zip Is Blank.');
    }elseif(empty($Email)){
        throw new Exception('Email Is Blank.');
    }elseif(empty($Password)){
        throw new Exception('Password Is Blank.');
    }
    echo 'All Success';
}catch(Exception $e){
    echo $e->getMessage();
}
于 2012-11-19T18:03:32.260 に答える
4

たぶん、次のように再編成できます。

$messages = array();

if (empty($EmployeeID)){
    $messages[] = "EmployeeID Is Blank."; 
}
if (empty($Firstname)){
    $messages[] = "Firstname Is Blank."; 
}

// and so on for the rest.

最後に、$messages検証するために空かどうかを確認できます。

if (empty($messages)){
    echo "All Success";
}else {
   echo "Errors:";
   foreach($messages as $message){
       echo "$message <br>";
   }
}
于 2012-11-19T18:06:18.227 に答える
2

なぜこれらのelseステートメントをすべて使用しているのですか? ユーザーの混乱を避けるために、すべてのエラーを一度に表示します (ユーザーがエラーを修正すると、突然別のエラーが表示されます...)。

簡単な例:

echo empty($EmployeeID) ? 'EmployeeID Is Blank.' : '';
echo empty($Firstname) ? 'Firstname Is Blank.' : '';
//etc.

おそらくすべてのエラーメッセージを配列に追加し、それをループして空かどうかを確認します。

$errors = array();

if (empty($EmployeeID))
{
  $errors['employeeid'] = 'EmployeeID Is Blank.';
}
if (empty($Firstname))
{
  $errors['firstname'] = 'Firstname Is Blank.';
}
// etc.

if (count($errors) > 0)
{
  // error handling
}

// and you can use the array keys to display the appropriate messages at the appropriate place if it is set:
if (isset($errors['employeeid']))
{
  // display the EmployeeID error message where the field should be filled in
}
于 2012-11-19T18:05:21.520 に答える
2

次のような連想配列を使用できます。

$formValues = array(
  'Employee ID' => $EmployeeID,
  'First Name' => $Firstname,
  'Last Name'=> $Lastname,
  'Phone Number'=> $PhoneNumber,
  'Address'=> $Address,
  'City'=> $City,
  'State'=> $State,
  'Zip'=> $Zip,
  'Email'=> $Email,
  'Password'=> $Password,
);
$error=false;

foreach ($formValues as $key => $value) {
  if(empty($value)) {
    echo($key.' is blank');
    $error=true;
  }
}
if(!$error) {
  echo("All Success");
}
于 2012-11-19T18:16:30.347 に答える
1

フォームバリデーターですべてをまとめます。

<?php
  function is_form_valid() {
    if ($Firstname === "") { return false; }
    if ($Lastname === "") { return false; }
    // ...

    return true;
  }
?>

もちろん、これはアイデアを強調するだけであり、フォーム フィールドを渡すための最良の方法を決定する必要があります。次に、それをメイン処理ルーチンで単一の呼び出しとして使用します。

<?php

  if (is_form_valid()) {
    // do stuff
  } else {
    // report error
  }
?>

より便利にするために、名前フィールド、電子メールなどに有効な入力用の共有クラスを作成し、フォーム検証からそれを呼び出すことができます。そのようなクラスが存在すると想像すると、メソッドは次のようになります。

<?php
  function is_form_valid() {
    if (! $validator->is_valid_name($Firstname)) { return false; }
    if (! $validator->is_valid_name($Lastname)) { return false; }
    if (! $validator->is_valid_email($Email)) { return false; }
    if (! $validator->is_valid_phone($Phone)) { return false; }
    // ...

    return true;
  }
?>

名前、電話番号、住所などについては、地域によってさまざまな違いがあることに注意してください。一般的な落とし穴については、こちらを参照してください。このフォーラムには、データ検証の主題に関するいくつかの質問もあります。

于 2012-11-19T18:03:05.860 に答える
1

他の回答のほとんどは優れていますが、次の使用方法も学ぶ必要がありますelseif()

if ($EmployeeID === "") {
    echo "EmployeeID Is Blank.";
} elseif ($Firstname === "") {
    echo "Firstname Is Blank.";
} elseif ($Lastname === "") {
    echo "Last Name Is Blank";
} //etc
于 2012-11-19T18:30:48.980 に答える
1
$errors = "";

if($EmployeeID == "")
{
    $errors .= "Employee ID blank<br />";
}

if($Firstname == "")
{
    $errors .= "First Name blank<br />";
}

if($errors != "")
{
    echo $errors;
}
于 2012-11-19T18:03:33.373 に答える