2011-09-07 128 views
0

我的表單同時具有文本區域和複選框。當我輸入POST結果時,即使選中了多個複選框值,也只會發佈其中一個複選框值。通過PHP POST POST複選框表單

這是我的形式:

<form action="search.php"> 
<input type="text" name="term"> 

<input type="checkbox" name="filter" value="subject"> Subject 
<input type="checkbox" name="filter" value="course"> Course 
<input type="checkbox" name="filter" value="professor"> Professor 

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

而且這是我echo形式(search.php):

<?php 
$term = $_GET['term']; 
$filter = $_GET['filter']; 
echo "$term $filter"; 
?> 
+5

嘗試使用過濾器[] – realshadow

+0

爲什麼不回答您的建議@realshadow? –

回答

1

麻煩的是你已經分配的每個複選框的名字,什麼是目前發生的事情是第一個複選框被PHP及其賦值給變量的值讀取時,下一個過濾器複選框正在被讀取,但隨後覆蓋變量的當前賦值,然後再次使用第三個複選框。所以你永遠只會把最後一個打勾的複選框作爲你的$ filter變量的值。

你需要單獨分配每個複選框有不同的名稱,例如:

<form action="search.php"> 
<input type="text" name="term" /> 

<input type="checkbox" name="filter1" value="subject" /> Subject 
<input type="checkbox" name="filter2" value="course" /> Course 
<input type="checkbox" name="filter3" value="professor" /> Professor 

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

那麼PHP:

<?php 
$term = $_GET['term']; 
$filter1 = $_GET['filter1']; 
$filter2 = $_GET['filter2']; 
$filter3 = $_GET['filter3']; 
echo "$term $filter1 $filter2 $filter3"; 
?> 

你也有你的最後一個複選框的值相同,第二個讓我如果這實際上是錯誤的,你可以明顯地改變它。

另外要注意的,也可能是使用POST方法而不是GET,因爲它是更安全的一個好主意,但是,您可能有理由對使用GET,但它只是一個擡起頭來:)

0

難道是因爲你不關閉輸入標籤,它的治療他們都是一體嗎?

+0

不,這不是問題。複選框全部命名相同。作爲realshadow指出它應該是過濾器[] –

+0

當然,完全忽略了那一點! – dougajmcdonald

3

試試這個:

<input type="checkbox" name="filter[]" value="subject" /> Subject 
<input type="checkbox" name="filter[]" value="course" /> Course 
<input type="checkbox" name="filter[]" value="course" /> Professor 

在你的search.php腳本提交的「過濾器」變種將被視爲一個數組。

欲瞭解更多信息,看看這裏:http://us2.php.net/manual/en/faq.html.php#faq.html.arrays

另一個類似的問題,我認爲是:HTML input arrays

0

您也可以爲每個複選框使用不同的名稱,例如filter_1,filter_2等。

1

我認爲您有3個輸入框命名爲相同的「過濾器」,哪一個是PHP預期會得到的?

單選按鈕,我們使用的濾鏡陣列[]所以如果你真的想複選框,你真的希望他們所有的同名然後嘗試

<input type="checkbox" name="filter[]" value="subject"/> Subject 
<input type="checkbox" name="filter[]" value="course"/> Course 
<input type="checkbox" name="filter[]" value="course"/> Professor 

,然後在你的PHP你會得到過濾爲數組。