2012-02-14 141 views
3

好的,所以,在處理單選按鈕數組時比其他線程有不同的問題。HTML:單選按鈕陣列

我想讓它取決於所選答案的值保存在不同的數組上,但我不想讓用戶能夠從同一個問題中選擇多個選項。

實施例:

Question 1 
<input type="radio" name="Array1[]" value="question1"/> 
<input type="radio" name="Array2[]" value="question1"/> 
<input type="radio" name="Array3[]" value="question1"/> 
<input type="radio" name="Array4[]" value="question1"/> 

Question 2 
<input type="radio" name="Array1[]" value="question2"/> 
<input type="radio" name="Array2[]" value="question2"/> 
<input type="radio" name="Array3[]" value="question2"/> 
<input type="radio" name="Array4[]" value="question2"/> 

這樣做的目的是爲了讓我可以安排在4個類別一個問題本身,和填充與得到分配給它們的問題每個陣列。

例子:

假設4個問題,答案是1,3,1,2,所產生的陣列我想應該是:

Array1[0] = "question1" 
Array1[1] = "question3" 

Array2[0] = "question4" 

Array3[0] = "question3" 

Array4[] = Empty array 

可以這樣做或做我需要一個不同的方法來獲得理想的輸出?順便說一下,我計劃使用PHP來處理這個表單。

編輯:一些更多的細節。一個示例用法。

<h1>What are your preferences?</h1> 
<form type=...etc.> 
    <label>Cats</label> 
    <input type="radio" name="Love[]" value="Cats"/> 
    <input type="radio" name="Like[]" value="Cats"/> 
    <input type="radio" name="Dislike[]" value="Cats"/> 
    <input type="radio" name="Hate[]" value="Cats"/> 
    <label>Dogs</label> 
    <input type="radio" name="Love[]" value="Dogs"/> 
    <input type="radio" name="Like[]" value="Dogs"/> 
    <input type="radio" name="Dislike[]" value="Dogs"/> 
    <input type="radio" name="Hate[]" value="Dogs"/> 
    <label>Ferrets</label> 
    <input type="radio" name="Love[]" value="Ferrets"/> 
    <input type="radio" name="Like[]" value="Ferrets"/> 
    <input type="radio" name="Dislike[]" value="Ferrets"/> 
    <input type="radio" name="Hate[]" value="Ferrets"/> 
    <label>Turtles</label> 
    <input type="radio" name="Love[]" value="Turtles"/> 
    <input type="radio" name="Like[]" value="Turtle"/> 
    <input type="radio" name="Dislike[]" value="Turtles"/> 
    <input type="radio" name="Hate[]" value="Turtles"/> 
<form> 
+0

這是什麼邏輯?目的是什麼?你只能選擇一個收音機,這是關於收音機的事情。你爲什麼要用數組?一個簡單的<?php $ radioValue = $ _POST ['radioName']?>'將起作用。 – elclanrs 2012-02-14 19:12:14

+0

而不是問題的答案,這是某種安排腳本,其中用戶應該將問題安排在四個類別中的一個。把它看作是對象的問題,可以放在四個盒子中的一箇中;所以期望的輸出是每個盒子包含的。 – ZoeStellan 2012-02-14 19:17:28

+0

你能舉出一個可能的問題和答案的例子嗎?我仍然不明白。你不能只使用複選框嗎? – elclanrs 2012-02-14 19:21:31

回答

1

我想你會需要從另一個方向來的話,像這樣

<label>Cats</label> 
<input type="radio" name="Cats" value="Love"/> Love 
<input type="radio" name="Cats" value="Like"/> Like 
<input type="radio" name="Cats" value="Dislike"/> Dislike 
<input type="radio" name="Cats" value="Hate"/> Hate 

,並在服務器端,是這樣的:

$loves=array(); 
$likes=array(); 
$dislikes=array(); 
$hates=array(); 

然後遍歷$ _POST,檢查該值,如果它匹配您期望的四個值中的任何一個,則將該名稱推入適當的數組中。

2

只能選擇每名一個單選按鈕,所以如果你有不同的名稱(如你這樣做),用戶將能夠選擇每個問題不止一個單選按鈕。我很抱歉地說,但你提出的建議是行不通的。相反,您將不得不維護一個手動的相應問題回答的號碼列表。看起來你提前知道所有的答案,所以這不應該是一個大問題。

+0

我知道我必須使用相同名稱的選項是互斥的。我的問題是如何達到預期的結果,即使我必須採取不同的方法。 – ZoeStellan 2012-02-14 19:33:10

2

我認爲你可以猜測這個名稱將複選框分組,所以你想要做到這一點的方式是不合理的,沒有javascript。我建議你爲每個問題命名複選框,然後你可以使用php對它們進行分組。 例如,如果你得到的答案1,3,1,2你可以push他們進入適當的數組。 這將是這樣的。但它不是餅乾證據

 <form method="post"> 
      <input type="radio" name="v1" id="v1-1" value="1"/><label for="v1-1">1-1</label><br/> 
      <input type="radio" name="v1" id="v1-2" value="2"/><label for="v1-2">1-2</label><br/> 
      <input type="radio" name="v1" id="v1-3" value="3"/><label for="v1-3">1-3</label><br/> 

      <input type="radio" name="v2" id="v2-1" value="1"/><label for="v2-1">2-1</label><br/> 
      <input type="radio" name="v2" id="v2-2" value="2"/><label for="v2-2">2-2</label><br/> 
      <input type="radio" name="v2" id="v2-3" value="3"/><label for="v2-3">2-3</label><br/> 

      <input type="radio" name="v3" id="v3-1" value="1"/><label for="v3-1">3-1</label><br/> 
      <input type="radio" name="v3" id="v3-2" value="2"/><label for="v3-2">3-2</label><br/> 
      <input type="radio" name="v3" id="v3-3" value="3"/><label for="v3-3">3-3</label><br/> 

      <input type="radio" name="v4" id="v4-1" value="1"/><label for="v4-1">4-1</label><br/> 
      <input type="radio" name="v4" id="v4-2" value="2"/><label for="v4-2">4-2</label><br/> 
      <input type="radio" name="v4" id="v4-3" value="3"/><label for="v4-3">5-3</label><br/> 
      <input type="submit" value="vote"/> 
     </form> 
<?php 
if(! empty($_POST)) 
{ 
    $plausible_answers = array(1,2,3,4); 
    $answers = array(); 
    for($i=1;! empty($_POST["v$i"]);++$i) 
    { 
     if(in_array($_POST["v$i"], $plausible_answers)) 
     { 
      $answers[$_POST["v$i"]][] = $i; 
     } 
    } 
    print_r($answers); 
} 
?> 
+0

是的,我也在想這個,但我想要一個更簡單的解決方案(奧卡姆)。由於似乎沒有辦法解決這個問題,我只需要按照你所說的去做。謝謝。 – ZoeStellan 2012-02-14 19:38:52

0

你可以創建類似array []的數組,但是在單選按鈕中,我們必須爲array [1],array [2] ...動態地提供索引。我們給名稱像radioArray []像其他輸入類型=「fname []」,但它不會自動增加索引,我們必須增加索引與額外的變量。

e.g name= "$radiArray[1] = 'val1'"; //give index like 1,2,3 ... 
     name ="$radiArray[2] = 'val2'"; ....