单选按钮名称属性是否具有数值

时间:2013-06-25 11:30:40

标签: php for-loop radio-button html-form

不确定问题标题是否足够清晰 - 但我所指的是 - 将数字值102表示为单选按钮的名称属性

是不好的做法
<input type="radio" name="102" value="2032" /> Hello World

如果这是一个坏主意 - 我该如何处理这种情况。 我有一个多项选择考试,所有60个问题都会一次显示在页面上。

问题存储在问题数组中,对于每个问题 - 多个选项存储在答案数组中

这是for循环,用他们的多项选择答案生成60个问题 - 现在我使用question_id作为单选按钮的值

<?php
$question_ids = array_keys($this->question_array);
foreach($question_ids as $question_id) 
{
    $question = $this->question_array[$question_id];
    $answers = $this->answer_array[$question_id];
?>
    <div> 
        <strong>Q) <?php echo $question['question'];?></strong>         
    <div>
        <?php foreach ($answers as $answer) { ?><br/>
        <input type="radio" name="<?php echo $question_id;?>" value="<?php echo $answer['answer_id'];?>" /> <?php echo $answer['answer'];?>
        <?php } ?>          
    </div>
    </div>
<?php 
} ?>

所以我已经使用question_id指定了名称,并使用answer_id指定了值 - 所以在服务器端 - 我将知道哪个问题选择了哪个答案选项 - 不用说它们是来自数据库的唯一自动生成的id

foreach ($_POST as $key => $value)
    echo "For question id ".htmlspecialchars($key)." answer selected is ".htmlspecialchars($value)."<br>";

如果分配号码是一个坏主意 - 为什么呢。 我的另一个选择是分配名称值,如name =“questionId-102”,并在服务器端解析它。

让我知道处理此问题的最佳方法是什么。 感谢

2 个答案:

答案 0 :(得分:2)

更好的做法是将其置于一系列问题中:

<?php foreach ($answers as $answer) { ?><br/>
<input type="radio" name="questions[<?=$question_id;?>]" value="<?=$answer['answer_id'];?>" /> <?=$answer['answer'];?>

foreach ($_POST['questions'] as $key => $value)
    echo "For question id ".htmlspecialchars($key)." answer selected is ".htmlspecialchars($value)."<br>";

答案 1 :(得分:0)

如果您需要一系列或一系列数字,可以在名称前使用简单字符串。不建议使用数字作为元素的名称。尝试使用以下代码

<?php
$question_ids = array_keys($this->question_array);
foreach($question_ids as $question_id) 
{
    $question = $this->question_array[$question_id];
    $answers = $this->answer_array[$question_id];
?>
    <div> 
        <strong>Q) <?php echo $question['question'];?></strong>         
    <div>
        <?php foreach ($answers as $answer) { ?><br/>
        <input type="radio" name="question_<?php echo $question_id;?>" value="<?php echo $answer['answer_id'];?>" /> <?php echo $answer['answer'];?>
        <?php } ?>          
    </div>
    </div>
<?php 
} ?>

然后,您可以使用explode()函数通过使用'_'作为分隔符和数组的第二个元素作为问题ID来获取进一步处理的问题ID。