0

PHPで両方のチェックボックスがオンになっているときにメソッドを呼び出すにはどうすればよいですか?

if (isset($_POST['check1'])) 
{data1();}

else if (isset($_POST['check2']) 
{data2();}

上記は、単一のチェックボックスに対して完全に機能します。両方にチェックマークを付けると、data1()のみが表示されます。以下を試してみました。

else if(isset($_POST['check1']) && ($_POST['check2'])) 
{data1and2();}

else if(isset($_POST['check1']) && ($_POST['check2']))
{data1and2();}   
4

3 に答える 3

2

あなたが逃しisset$_POST['check2']

 if(isset($_POST['check1']) && isset($_POST['check2'])) {
    data1and2();
 }

そして、この条件が最初でなければなりません。

 if(isset($_POST['check1']) && isset($_POST['check2'])) {
    data1and2();
 } else if (isset($_POST['check1'])) {
    data1();
 } else if (isset($_POST['check2'])) {
    data2();
 }
于 2012-09-27T03:13:49.257 に答える
1

ifステートメントを分離してみませんか?

if(isset($_POST['check1']))
    data1();

if(isset($_POST['check2']))
    data2();

両方がチェックされているときに別の関数が必要な場合は、次のようにすることができます。

list($flag1, $flag2) = array(isset($_POST['check1']), isset($_POST['check2']));

if($flag1 && flag2)
    data1and2();
else if($flag1)
    data1();
else if($flag2)
    data2();
于 2012-09-27T03:13:56.903 に答える
0

あなたの論理は間違っていると思います。シングルの場合、このロジックは問題ありませんが、両方をチェックすると、issetオンcheck1がトリガーされ、両方がチェックされた場合に別のアクションを実行する必要があることをスクリプトが認識しません。あなたの最善の策は、最初ifに両方がチェックされていることをチェックし、次に単一のボックスをチェックすることです。

if (isset($_POST['check2'] && isset($_POST['check1']))
{data1and2();}

else if (isset($_POST['check1'])) 
{data1();}

else if (isset($_POST['check2']) 
{data2();}
于 2012-09-27T03:17:54.653 に答える