-1

こんにちは、59 個のテキスト ボックスとチェック ボックスを含むフォームを作成しました。検証のためにこれらのボックスをフォームから php のページに渡したいのですが、失敗したのは次のコードです。

if(isset($_POST['REID'], $_POST['REName'],...more variables..

{

   $REID = preg_replace("[^A-Za-z0-9-]", "", $_POST['REID']);
   $REName = preg_replace("[^A-Za-z0-9-]", "", $_POST['REName']); ... more variables..

   if(empty($REID) or empty($REName) ... more variables..
   {
    echo 'oop's some value missing';
   }
   else
   {
     Insertion code goes in here.
    }


}
else
{
   echo 'The variables not set';
}

私はこの構文を2つのテキストボックスで使用していますが、59では機能しません。すべての変数が送信されている天気やその他の問題がわかりません.????????????

4

1 に答える 1

1

複数のパラメータが指定されている場合、 isset() は、すべてのパラメータが設定されている場合にのみ TRUE を返します。評価は左から右に進み、設定されていない変数が検出されるとすぐに停止します。

それはPHP マニュアルからのものです。したがって、これらの 59 個の変数のいずれかが設定されていない場合、if失敗します。それは予想される動作です。コマンドを発行して、print_r($_POST);これらの 59 個の変数が存在するかどうかを確認できます。これは、条件ステートメントで非常に多くの変数を使用することの欠点の 1 つであり、デバッグが非常に難しくなります。これらすべての名前を配列に入れてループすることができます。これは、新しい条件ごとに59個の名前を何度も書き直すよりも簡単です。

編集

たとえば、これらの行で何かを試すことができます

<?php
$check=array();
$check[]="REID";
$check[]="REName";
$check[]="ThirdVar";
$check[]="FourthVar";


foreach($check as $index)
{
    if(!isset($_POST[$index]))
    {
    echo "POST does not have a value for $index <br>";
    }
}


?>
于 2013-04-11T04:07:56.727 に答える