我需要在 php 文件测验中动态分配单选按钮

Posted

技术标签:

【中文标题】我需要在 php 文件测验中动态分配单选按钮【英文标题】:I need to dynamically assign radio button in a php file quiz 【发布时间】:2017-05-25 04:25:51 【问题描述】:

我正在设计一个动态生成的测验页面(使用 mysqli / php / html),我需要插入一些单选按钮以验证答案。 我遇到的问题是,在循环内打印单选按钮时,它们没有正确取消选中 - 而不是有 4 组单选按钮/问题,我的单选按钮分配如下:问题 1 a) 和问题 2 a)等等。 有人知道如何解决这个问题吗?

$sql = "SELECT id, descr, a,b,c,d FROM question ORDER BY rand() LIMIT  15";
$result = $conn->query($sql);



if ($result->num_rows > 0) 
    while($row = $result->fetch_assoc()) 
        print "<strong>".$row["descr"] ."</strong><br>";
        echo "<br>";
        echo 'a:'.$row["a"].'<td><cb><input type="radio" name="a" value="$row["a"]"></cb></td>'."<br>";
        echo "<br>";
        echo 'b:'. $row["b"].'<td><cb><input type="radio" name="b" value="$row["b"]"></cb></td>'."<br>";
        echo "<br>";
        echo 'c:'.$row["c"].'<td><cb><input type="radio" name="c" value="$row["c"]"></cb></td>'."<br>";
        echo "<br>";
        echo 'd:'. $row["d"].'<td><cb><input type="radio" name="d" value="$row["d"]"></cb></td>'."<br>";
        echo "<br>";

    

 else 
    echo "0 results";

$conn->close();

【问题讨论】:

如果单选按钮名称相同,则只能选择一个。在您的情况下,所有问题都有相同的单选按钮名称 【参考方案1】:

您需要在单选按钮名称属性中包含每个问题独有的内容,例如:

<input type="radio" name="a<?= $row['question_number'] ?" />

question_number 只是一些虚构的字段,但这应该是每个问题独有的内容。这将导致类似:

Question 1:    
<input type="radio" name="a1" />
<input type="radio" name="b1" />
<input type="radio" name="c1" />
<input type="radio" name="d1" />

Question 2:
<input type="radio" name="a2" />
<input type="radio" name="b3" />
<input type="radio" name="c4" />
<input type="radio" name="d5" />

【讨论】:

问题已解决,但现在问题和答案没有出现。 echo "".$nr .$row["descr"] ."";回声“”; echo 'a:'.$row["a"].''."";回声“”; 抱歉-我的答案中的代码是一个摘录,其中包含如何修改现有代码的示例,而不是替换您的代码。要查找的部分是 name= 属性。【参考方案2】:

执行以下操作:

if ($result->num_rows > 0) 
    while($row = $result->fetch_assoc()) 
        print "<strong>".$row["descr"] ."</strong><br>";
        echo "<br>";
        echo 'a:'.$row["a"].'<td><cb><input type="radio" name="q'.$row["id"].'" value="a"></cb></td>'."<br>";
        echo "<br>";
        echo 'b:'. $row["b"].'<td><cb><input type="radio" name="q'.$row["id"].'" value="b"></cb></td>'."<br>";
        echo "<br>";
        echo 'c:'.$row["c"].'<td><cb><input type="radio" name="q'.$row["id"].'" value="c"></cb></td>'."<br>";
        echo "<br>";
        echo 'd:'. $row["d"].'<td><cb><input type="radio" name="q'.$row["id"].'" value="d"></cb></td>'."<br>";
        echo "<br>";

    

 else 
    echo "0 results";

这样每个问题都会创建一组名称相同但值不同的单选按钮,因此当您提交时,您可以检查例如:$_GET["qXXX"] 以确定问题 XXX 的答案是什么(例如 a、b、 c, 或 d)

【讨论】:

以上是关于我需要在 php 文件测验中动态分配单选按钮的主要内容,如果未能解决你的问题,请参考以下文章

PHP,单选按钮返回,而不是价值

使用 PHP 和 MySQL 进行自我发布的动态单选按钮

在动态创建单选按钮方面需要帮助

验证动态单选按钮jQuery

如何根据给定的计数动态添加单选按钮?

如何为动态生成的内容编写自定义表单助手模板?