2012-06-21 49 views
1

我有一個html表單從我的文章

<form action="process.php" method="post"> 

    <input type="checkbox" name="name[v1]" /> 
    <input type="checkbox" name="name[v2]" /> 
    <input type="checkbox" name="name[v3]" /> 
    <input type="submit" name="update" value="update"> 
</form> 

如果他們只有一個複選框被選中,然後我只看到複選框

陣列 ( [\'V3 \得不到值'] => on )

如果我已經檢查了所有三個盒子,然後我看到它們全部。

Array 
(
    [\'v1\'] => on 
    [\'v2\'] => on 
    [\'v3\'] => on 
) 

他們有什麼辦法可以看到我的所有複選框,即使他們沒有被檢查。

process.php

foreach($_POST['name'] as $k => $v) 
{ 
    echo "key: ".$k; 
} 
+6

HTML表單的另一個設計特徵從未提交選中的複選框。 –

+0

@sebas:什麼javascript? 'name [v1]'是HTML名稱屬性的完全可接受的值。 –

+0

[將複選框狀態傳遞給PHP]可能的重複(http://stackoverflow.com/questions/10768024/passing-checkbox-state-to-php) –

回答

2

複選框和單選按鈕不會傳遞到處理腳本,如果他們沒有「選中」屬性設置。這是HTML4的設計。

你可以設置一個狀態的唯一方法就是使用類似:

if(!isset($_POST['mycheckbox'])){ $_POST['mycheckbox'] = 0; } 

或更好:

$_POST['mycheckbox'] = isset($_POST['checkbox']); 

關於單選按鈕,你應該只使用第一個版本以來單選按鈕可以有多個值,所以不要在它們中設置TRUE/FALSE,而是要設置一個默認值。

另要注意,禁用的元素都沒有貼,即使他們有一個值,你永遠不會看到他們,這是HTML4 +