【问题标题】:Form with radio buttons & checkboxes sending to php带有单选按钮和复选框的表单发送到 php
【发布时间】:2011-09-22 20:44:13
【问题描述】:

Harmiih 确实帮助了我编写脚本 (http://stackoverflow.com/questions/7510546/html-form-name-php-variable)。基本上我有一张有问题的桌子。表单从表中检索问题,然后我需要选择的答案才能转到 answer.php。一切都在使用单选按钮,但使用复选框,它只发送最后一个选中的复选框。有人可以帮帮我吗?

表格

$sql1="SELECT * FROM ex_question WHERE test_name = '$tid' AND q_type = 'mr' ORDER BY RAND() LIMIT 5";
$result1=mysql_query($sql1);

echo "<form method='post' action='answer.php'>";

while($row1 = mysql_fetch_array($result1))
{
    $test_name=$row1['test_name'];
    $q_nr=$row1['q_nr'];
    $q_type=$row1['q_type'];
    $question=$row1['question'];
    $option1=$row1['option1'];
    $option2=$row1['option2'];


    echo "<P><strong>$q_nr $question</strong><BR>";

    if ($q_type != 'mr') {

        if($option1!="") {
            echo "<input type='radio' name='question[$q_nr]' value='$option1'>$option1<BR>";
        } else {
            echo '';
        }
        if($option2!="") {
            echo "<input type='radio' name='question[$q_nr]' value='$option2'>$option2<BR>";
        } else {
            echo '';
        }
    } else {
        if($option1!="") {
            echo "<input type='checkbox' name='question[$q_nr]' value='$option1'>$option1<BR>";
        } else {
            echo '';
        } 
        if($option2!="") {
            echo "<input type='checkbox' name='question[$q_nr]' value='$option2'>$option2<BR>";
        } else {
            echo '';
        } 
    }

    echo "<BR>";
    echo "<BR>";
    echo "</p>";
}
echo "<input type='submit' value='Send Form'>";
echo "</form>";

answer.php

<?php
//Key is $q_nr and $answer is selected $option
foreach($_POST['question'] as $key => $answer) {
    echo $key;
    echo $answer;
}
?>

【问题讨论】:

    标签: php html forms checkbox


    【解决方案1】:

    你可以用这个作为名字:

    name="question[$q_nr][]"
    

    这将确保您返回一个包含所选复选框的所有值的数组。

    【讨论】:

    • 谢谢,JNDPNT 的回答帮助了我,我使用的形式是:name='question[$q_nr][]' 和 answer.php:foreach($_POST['question'] as $key => $answer) { echo $answer[0];回声 $answer[1]; }
    • 顺便说一句,您不必手动回显所有复选框答案,因为您无法判断用户将选择多少个复选框。一个例子,你怎么能做到这一点。 link
    • @Harmiih 谢谢,马上试试。
    【解决方案2】:

    您需要在复选框中有不同的name 值。

    例如name='question1[$q_nr]'name='question2[$q_nr]'。相同的名称仅适用于单选按钮所在的分组元素。

    或者将它们作为数组传递:

    name='question[$q_nr][1]'name='question[$q_nr][2]'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-02
      • 2023-04-06
      • 2015-11-03
      • 1970-01-01
      • 2020-03-08
      • 2012-09-14
      • 1970-01-01
      • 2016-02-03
      相关资源
      最近更新 更多