HTML:单选按钮阵列

时间:2012-02-14 19:09:24

标签: php html arrays forms radio-button

好的,所以,处理单选按钮数组时遇到的问题与其他线程不同。

我想拥有它,以便根据所选答案,将值保存在不同的数组中,但我不希望用户能够从同一个问题中选择多个选项。< / p>

示例:

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>

4 个答案:

答案 0 :(得分:2)

每个名称只能选择一个单选按钮,因此如果您有不同的名称(就像您一样),用户将能够为每个问题选择多个单选按钮。我很遗憾地说,但你提出的建议是行不通的。相反,您必须维护一个针对相应问题回答的手动数字列表。看起来你提前知道所有的答案,所以这不应该是那么大的交易。

答案 1 :(得分: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);
}
?>

答案 2 :(得分: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,检查值,如果它匹配您期望的四个中的任何一个,则将名称推送到相应的数组中。

答案 3 :(得分:0)

你可以创建像array []这样的数组但是在单选按钮中我们必须为数组[1],数组[2] ...动态地提供索引。 id我们给出像radioArray []这样的名字,就像其他输入类型=“fname []”但它不会自动增加索引,我们必须用额外的变量增加索引。

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