2009-11-01 139 views
0

我該如何處理頁面中的所有單選按鈕?PHP多個單選按鈕

<input type="radio" name="radio_1" value="some" /> 
<input type="radio" name="radio_1" value="some other" /> 

<input type="radio" name="radio_2" value="some" /> 
<input type="radio" name="radio_2" value="some other" /> 

此按鈕將被動態添加,所以我不知道單選按鈕的名稱(以及按鈕的數量)。有沒有辦法讓所有的無線電值,與for循環或類似的東西?謝謝

回答

2

使用foreach循環

<?php 
foreach ($_POST as $key => $val) 
    echo "$key -> $val\n"; 
?> 

$關鍵是選擇的選項的名稱和$ VAL,好了,值。

1

由於瀏覽器只會將您輸入的所有內容更改爲HTTP格式的表單數據,您將無法確定單選按鈕與文本框或其他輸入的數據。

如果命名規則是一樣的例子,只是循環,直到你沒有找到一個值:

<? 
    for ($idx = 1; $idx <= 1000; $idx++) { 
    if (isset($_REQUEST["radio_$idx"])) { 
     // handle value 
    } 
    } 
?> 

編輯另外,如果是動態生成表單,你可以寫號它創建的單選按鈕作爲窗體中的隱藏字段。

如果你能夠改變正在生成的表單,你可以編寫一個隱藏的輸入,提供你想要查找的所有單選按鈕的列表。在編寫單選按鈕時,只需製作所有名稱的分號分隔列表即可。完成後,將其寫入隱藏的輸入。事情是這樣的:

在源形式:

<input type="hidden" name="radio_button_list" value="some_value;other_value" /> 

然後在您的處理程序:

<? 
    $list = explode(';', $_REQUEST['radio_button_list']); 
    foreach ($list as $name) { 
    $value = $_REQUEST[$name]; 
    // handle name & value 
    } 
?> 
+0

我想你的意思是$ _POST和循環不是真的有效。更好地循環$ _POST並檢查模式 – jitter 2009-11-01 03:05:09

+0

確實,它可以是$ _GET或_POST,具體取決於表單的創建方式。無論哪種情況,結果都是一樣的。 – jheddings 2009-11-01 03:06:30

+1

或$ _REQUEST如果你不在意它是如何收到的。 – Jason 2009-11-01 03:07:24

0

jheddings'例子說明了一切。但是,您永遠不會獲得全部按鈕的名稱/值 - 只是每個組中選定的一個按鈕。如果你需要字面所有值,你將不得不使用Javascript。

+0

好點...我確實假設OP要求所有選定的值,而不是可能的值。 – jheddings 2009-11-01 03:04:22

+0

yap ...只是選定的值 – kmunky 2009-11-01 03:07:22