php - 使用 PHP 和 MySQL self 发布的动态单选按钮

标签 php html mysql web radio-button

我正在从 MySQL 数据库中提取数据,该数据库动态放置一个问题,其中包含 4-5 个单选按钮选项供您选择答案。这些单选按钮都属于同一个组 $quest_name。 while 语句的第一遍将创建属于单选组“question_1”的 4 个单选按钮。

它会在一个页面上创建 30-40 个这样的问题,每个问题都有 4 个单选按钮。我希望用户填写所有答案,然后页面回发给自己,用户的答案仍然被选中,然后显示它们是否正确(我仍然需要添加的功能)。

我正在尝试关注 http://www.w3schools.com/php/php_form_complete.asp作为示例,而是使用动态创建的单选按钮名称。

这是我目前所拥有的:

        <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 

            <?php

            if ($result->num_rows > 0) {
                // output data of each row
                while($row = $result->fetch_assoc()) {
                    $quest_num = $row["id"];
                    $question = $row["question"];
                    $option_1 = $row["option_1"];
                    $option_2 = $row["option_2"];
                    $option_3 = $row["option_3"];
                    $option_4 = $row["option_4"];
                    $option_5 = $row["option_5"];
                    $answer = $row["answer"];
                    $quest_name = "question_" . $row["id"];

                    echo "(" . $quest_num . ") " . $question . "<br>";
            ?>


                    <label>
                        <input type="radio" name=<?php echo $quest_name ?>
                        <?php if (isset(echo $quest_name) && echo $quest_name == echo $option_1) echo "checked"; ?>
                        value=<?php echo $option_1 ?>><?php echo $option_1 ?>
                    </label>
                    <br>

                    <label>
                        <input type="radio" name=<?php echo $quest_name ?>
                        value=<?php echo $option_2 ?>><?php echo $option_2 ?>
                    </label>
                    <br>

                    <label>
                        <input type="radio" name=<?php echo $quest_name ?>
                        value=<?php echo $option_3 ?>><?php echo $option_3 ?>
                    </label>
                    <br>

                    <label>
                        <input type="radio" name=<?php echo $quest_name ?>
                        value=<?php echo $option_4 ?>><?php echo $option_4 ?>
                    </label>
                    <br>
                    <br>

            <?php 
                }
            } else {
                echo "0 results";
            }

            $conn->close();
    ?>

            <input type="submit">
        </form>

到目前为止让我伤心的部分是:

 <?php if (isset(echo $quest_name) && echo $quest_name == echo $option_1) echo "checked"; ?>

我也试过:

 <?php if (isset($quest_name) && $quest_name == $option_1) echo "checked"; ?>

和:

 <?php echo (isset($quest_name) && $quest_name == $option_1) ? "checked" : ""; ?>

您如何将他们选择的内容发回同一页面?就像在这种情况下,我试图说如果设置了“question_1”并且“question_1”等于“converter”(第一个单选按钮选项),然后在单击提交按钮时检查它。

我不太擅长网络开发,但我正在尝试创建一个网站来帮助我的电气技术同学。

感谢您的帮助。

编辑:

使用这行代码解决了问题:

<?php if(isset($_POST[$quest_name]) && $_POST[$quest_name]==$option_1) { echo 'checked="checked"'; } ?>

最佳答案

您需要的是 Radio Group。在 HTML 层中,它是用相同的名称创建的,每个都使用不同的值,如下所示:

<p>
  <label>
    <input type="radio" name="RadioGroup1" value="Value1" id="RadioGroup1_0">
    Radio</label>
  <br>
  <label>
    <input type="radio" name="RadioGroup1" value="Value2" id="RadioGroup1_1">
    Radio</label>
  <br>
</p>

当你想在 php 层中获取用户输入时,你可以这样做:

<?php
//check if Radio Group 1 is set
    if(isset($_POST['RadioGroup1'])) {
        // print the value of Radio Group 1 choice
        echo $_POST['RadioGroup1'];
    }
?>

当你想在 HTML 层中创建一个 Selected Radio 时,你可以这样做:

<input name="RadioGroup1" type="radio" id="RadioGroup1_1" value="radio" checked="checked">

所以你必须检查用户是否像这样输入了哪个 radio 的值:

<label>
    <input type="radio" name="RadioGroup1" value="value1" id="RadioGroup1_0" <?php if(isset($_POST['RadioGroup1']) && $_POST['RadioGroup1']=='value1') { echo ' checked="checked"'; } ?>>
    Radio</label>
  <br>
  <label>
    <input type="radio" name="RadioGroup1" value="value2" id="RadioGroup1_1" <?php if(isset($_POST['RadioGroup1']) && $_POST['RadioGroup1']=='value2') { echo ' checked="checked"'; } ?> >
    Radio</label>

关于php - 使用 PHP 和 MySQL self 发布的动态单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27478159/

相关文章:

php - 如何计算 MySQL 表中的行数?

php - Innodb 全文搜索中的转义 @ 符号

javascript - CSS:缩放更改时两列 Div 布局未对齐

php - Symfony 表单与 RESTful API 的序列化程序

php - 双域 - 适用于子页面,但不适用于主页

html - 始终将绝对定位的 div 置于交叉线上的中心?

javascript - 对不同的选择选项下拉列表进行分组

php - PHP 中使用 UTF8 的 hmtlspecialchars 时不显示变音符号

mysql - 使用 min() 时返回 NULL 值

mysql - 将 SELECT 的结果发送到 MySQL 中的存储过程