2012-09-27 277 views
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();} 
+0

有什么不对@Austin Brunkhorst的答案吗?你不需要使用“其他”。你可以有2个if语句。 –

回答

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(); 
} 
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(); 
+0

如果全部选中,他想调用'data1and2()'。这将调用'data1()'和'data2()',但不是'data1and2()' – xdazz

+0

介意解释投票吗? –

+0

我没有投票,但'list($ flag1,$ flag2)= array(isset($ _ POST ['check1']),isset($ _ POST ['check2'])); '做错了事。为什么不直接使用'$ flag1 = isset($ _ POST ['check1']); $ flag2 = isset($ _ POST ['check2']);' – xdazz

0

我相信你的逻辑是关闭的。在单打的情况下,这种逻辑是好的,但如果你同时检查, check1将被触发,脚本不知道它应该检查它应该采取不同的行动,如果两者都检查。最好的办法是把你的if,无论对于被检查第一,然后在检查单箱检查,像这样:

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

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

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