2011-01-07 63 views
6

如何在提交時使用PHP獲取多個選定複選框的名稱或ID?以下是示例表單。謝謝。使用php獲取多個複選框名稱/ ID

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
    <input type="checkbox" name="orange" id="orange"> 
    <input type="checkbox" name="apple" id="apple"> 
    <input type="checkbox" name="sky" id="sky"> 
    <input type="checkbox" name="sea" id="sea"> 
    <br> 
    <br> 
    <input type="submit" name="Submit" value="Submit"> 
</form> 

回答

18

複選框值從僅在複選框被選中表單提交。更重要的是,它的名稱屬性是重要的,而不是ID。

有很多PHP處理複選框幾種方法:

  1. 給所有複選框相同的名稱後面是一對方括號,因此整個組被作爲陣列處理。在這種情況下,給每個複選框一個值。
  2. 給每個複選框一個不同的名稱和值。
  3. 給每個複選框一個不同的名稱,但沒有值。

在每種情況下,都需要檢查$ _POST數組中是否存在複選框名稱。

例如:

<input type="checkbox" name="color[]" id="orange" value="orange"> 
<input type="checkbox" name="color[]" id="apple" value="apple"> 

要獲取值這些複選框:

if (isset($_POST['color'])) { 
    $colors = $_POST['color']; 
    // $colors is an array of selected values 
} 

但是,如果每個複選框有不同的名稱,這樣明確的值:

<input type="checkbox" name="orange" id="orange" value="orange"> 
<input type="checkbox" name="apple" id="apple" value="apple"> 

您仍然需要使用isset():

if (isset($_POST['orange'])) { 
    // orange has been set and its value is "orange" 
} 

如果您未設置值,則默認值爲「on」,但它不會位於$ _POST數組中,除非它已被選中,所以您仍然需要使用isset()。

4

你不會得到IDS但名稱將是$_POST陣列(和$_REQUEST)在關聯索引。注意:只有在客戶端檢查它們時,它們纔會在陣列中可用。

if ($_POST['oragne'] == 'on')

9

你需要給輸入同一個名字:

<input type="checkbox" name="selection[]" value="orange"> 
<input type="checkbox" name="selection[]" value="apple"> 
<input type="checkbox" name="selection[]" value="sky"> 
<input type="checkbox" name="selection[]" value="sea"> 

然後在$ _ POST [ '選擇']在PHP數組迭代。

+0

如果您只是將它們命名爲相同,則這不起作用。你需要將它們設置爲數組:`name =「selection [index]」` – 2011-01-07 23:40:13

2

您可以設置它們張貼到PHP爲數組,如果他們建立類似如下:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
    <input type="checkbox" name="box_group_1[oragne]" id="oragne"> 
    <input type="checkbox" name="box_group_1[apple]" id="apple"> 
    <input type="checkbox" name="box_group_1[sky]" id="sky"> 
    <input type="checkbox" name="box_group_1[sea]" id="sea"> 
    <br> 
    <br> 
    <input type="submit" name="Submit" value="Submit"> 
</form> 
<?php 
print_r($_POST['box_group_1']); 
?>