2012-09-27 211 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();}