-5

値を持つ400を超える非表示フィールドを持つフォームがあります。これらの値は、JavaScriptファイルから取得してHTMLテーブルに追加します。次に、これらの値をHTMLテーブルのセルから取得し、非表示フィールドに追加して、に送信します。 PHPファイル。

これらのフィールドとは別に、会社名、電子メールなど、非表示のフィールドではないフィールドがあります。ここで行う必要があるのは、1つの非表示のフィールドでも値があるかどうかを確認したいことです。フィールドに値がある場合、電子メール機能のみが機能するはずです。すべての非表示フィールドが空の場合、電子メールは機能しないはずです。それを行う簡単な方法があるかどうか提案してください。400フィールドのif条件を書くのは良い考えではないと思います。

たとえば、これらの投稿された値をPHP変数で取得し$_POST、それらをPHP変数に割り当てています。、、、 ..、。のような400個の変数があり$oneます。$two$three$fourhundred

単一の変数に値があるかどうかの条件を記述する必要があります。

if(strlen($one) > 0 || strlen($two) > 0 || and so on)

それを行うためのより良い方法はありますか?

4

2 に答える 2

0

これらのフィールドには論理的な名前が付けられていますか?もしそうなら、あなたはループを使用してこれを簡単に達成することができます。emailなどの名前が付けられている場合はcompany、さらに作業が必要になります。

私がそれを行う方法は、あなたが期待するすべてのPOSTデータ名の配列を使用することです。

例えば:

// Create an array of all of the expected variables
$expectedVars = array("email", "company", "anotherVariable");
$expectedVarNumbers = count($expectedVars);
$varsSoFar = 0;

foreach ($_POST as $key=>$var) {
    if (in_array($key, $expectedVars)) { // If this key is one of the expected vars
        $varsSoFar++;
    }
}

if ($varsSoFar == $expectedVarNumbers) {
    print("All fields have been correctly set!");
} else {
    print("At least one field is missing.");
}
于 2013-02-20T10:10:03.437 に答える
0

数値の命名を使用します。one_two_txtの代わりに、1_2を使用してください。このように、あなたはそれをループすることができます。

$filled = 1;
for($c = 0; $c <= 6; $c++)
{
    if($filled == 0)
    {
        break;
    }
    for($r = 0; $r <= 20; $r++)
    {
        if(strlen($_POST["" . $c . "_" . $r . ""]) <= 0)
        {
            $filled = 0;
            break;
        }
    }
}

$filledが0に等しい場合、空のフィールドがあるので、ユーザーをフォームまたはやりたいことへとポストバックできます。

于 2013-02-20T11:27:09.050 に答える