0

スクリプトのロジックを書く際に問題が発生しています。私はそれに頭を包むことができないようです。

6 つの数量フィールドと、各数量フィールドに対応する 2 つのチェック ボックスを含むフォームがあります。

数量フィールドは変数で参照されます$q1, $q2, $q3, $q4, $q5, $q6。チェックボックスは変数で参照されます$c1_1, $c1_2, $c2_1, $c2_2...など。

私が実現したいロジックは、数量フィールドに数値を入力した場合、対応する 2 つのチェックボックスのいずれかをオンにするか、フォームを無効にすることです。

私の現在のコードは次のようになります。

if(
   ($q1 !== "" && ($c1_1 == "" || $c1_2 == "")) ||
   ($q2 !== "" && ($c2_1 == "" || $c2_2 == "")) ||
   ($q3 !== "" && ($c3_1 == "" || $c3_2 == "")) ||
   ($q4 !== "" && ($c4_1 == "" || $c4_2 == "")) ||
   ($q5 !== "" && ($c5_1 == "" || $c5_2 == "")) ||
   ($q6 !== "" && ($c6_1 == "" || $c6_2 == ""))
) {
   $is_valid = false;
} else {
   $is_valid = true;
}

そのコードの問題点は、そのスクリプトをテストするときに、検証のために両方のチェックボックスをオンにする必要があることです。

4

2 に答える 2

2

私の理解が正しければ、次のいずれかを満たす場合、無効にしたいと考えています。

  • フィールドが空です
  • 両方のチェックボックス (フィールドに属する) がオフになっている

そうなるだろう

if(
   ($q1 !== "" && ($c1_1 == "" && $c1_2 == "")) ||
   ($q2 !== "" && ($c2_1 == "" && $c2_2 == "")) ||
   ($q3 !== "" && ($c3_1 == "" && $c3_2 == "")) ||
   ($q4 !== "" && ($c4_1 == "" && $c4_2 == "")) ||
   ($q5 !== "" && ($c5_1 == "" && $c5_2 == "")) ||
   ($q6 !== "" && ($c6_1 == "" && $c6_2 == ""))
) {
   $is_valid = false;
} else {
   $is_valid = true;
}

内側の () の有無にかかわらず。

自分で試したことはありませんが、うまくいくはずです。

于 2013-07-24T05:32:59.853 に答える
0

回答を送信する前に、いくつか試してみました。私はあなたのものに似たものを複製するためのフォームを書きました.

<form action="tester.php" method="POST">

    <input type="text" name="q1"/><br>
    <input type="checkbox" name="c1_1" value="Bike">check1<br>
    <input type="checkbox" name="c1_2" value="Car">check2<br><br>

    <input type="text" name="q2"/><br>
    <input type="checkbox" name="c2_1" value="Bike">check1<br>
    <input type="checkbox" name="c2_2" value="Car">check2<br><br>

    <input type="text" name="q3"/><br>
    <input type="checkbox" name="c3_1" value="Bike">check1<br>
    <input type="checkbox" name="c3_2" value="Car">check2<br><br>

    <input type="text" name="q4"/><br>
    <input type="checkbox" name="c4_1" value="Bike">check1<br>
    <input type="checkbox" name="c4_2" value="Car">check2<br><br>

    <input type="text" name="q5"/><br>
    <input type="checkbox" name="c5_1" value="Bike">check1<br>
    <input type="checkbox" name="c5_2" value="Car">check2<br><br>

    <input type="text" name="q6"/><br>
    <input type="checkbox" name="c6_1" value="Bike">check1<br>
    <input type="checkbox" name="c6_2" value="Car">check2<br><br>

    <input type="submit" name="submit" value="submit"/>

</form>

したがって、以下はphpスクリプトです

if(isset($_POST['submit']))
{
    $q1 = $_POST['q1'];


    $q2 = $_POST['q2'];


    $q3 = $_POST['q3'];


    $q4 = $_POST['q4'];


    $q5 = $_POST['q5'];


    $q6 = $_POST['q6'];


    if(
       ($q1 !== "" && (!isset($_POST['c1_1']) && !isset($_POST['c1_2']))) ||
       ($q2 !== "" && (!isset($_POST['c2_1']) && !isset($_POST['c2_2']))) ||
       ($q3 !== "" && (!isset($_POST['c3_1']) && !isset($_POST['c3_2']))) ||
       ($q4 !== "" && (!isset($_POST['c4_1']) && !isset($_POST['c4_2']))) ||
       ($q5 !== "" && (!isset($_POST['c5_1']) && !isset($_POST['c5_2']))) ||
       ($q6 !== "" && (!isset($_POST['c6_1']) && !isset($_POST['c6_2'])))
    ) 
    {
       echo 'false';
    } else 
    {
       echo 'true';
    }
}

おそらく私は少し遅れていますが、それが&&問題のようです。また、isset機能を使用する方が良いかもしれませんが、私の意見です。

于 2013-07-24T06:06:15.933 に答える