首页 文章

$ _POST不发送单选按钮的所有值

提问于
浏览
-2

我正在使用 PHP 进行在线测验系统,我通过while循环打印问题和选项(选项是单选按钮) . 我学会了如何将单选按钮值发送到 PHP ,但我遇到的问题是,只有第一个问题的选定选项被发送到 PHP . 例如,如果我在数据库中保存了两个问题并使用while循环在页面上打印,那么现在如果我为 question1 选择 option1 并为 question2 选择 option2 ,然后单击提交,则只需将值 option1 发布到 PHP ,以及其他选定的按钮值丢失 . 如果答案正确,我希望所有这些值通过数据库检查,然后根据正确答案显示分数 .

这是我的html页面的代码,我发布了整个代码,但我认为你应该检查 <form> 标签 .

<body>

<?php
include('connect.php');
$sql="Select * FROM html";
$record=mysql_query($sql);
?>      
<div id="container">
        <div class="header">
            <span class="heading"><span class="C">O</span>NLINE <span 
class="C">Q</span>UIZ <span class="C">S</span>YSTEM </span>
    <div class="logo"><img src="img/flogo.png" width="188" height="150" 
alt="logo"></div>

    </div>
        <div class="center">

         <nav>
            <ul>
            <li style="margin-right:180px; height:50px;width:auto"><a 
href="home.php">Username</a></li>
            <li><a href="Shome.php">Home</a></li>
            <li><a href="results.php">Results</a></li>
            <li><a href="welcome.php">Sign Out</a></li>
            </ul>
        </nav>
        <div id="page-wrap">
        <h1>HTML Quiz </h1>
            <form action="results.php" method="post" id="quiz">
            <ol>
            <li>
            <?php
            while($result=mysql_fetch_assoc($record))
            {
            echo "<form>";
            echo "<h3>";
            echo "".$result['id'].". ".$result['question']."";
            echo "</h3>";
            echo '<input type="radio" name="answer[]" id="question-1-answer-
A" value="A" />';
            echo '<label for="question-1-answer-A">';
            echo "".$result['option1']."";
            echo "</label>";
            echo '<input type="radio" name="answer[]" id="question-1-answer-
B" value="B" />';
            echo '<label for="question-1-answer-B">';
            echo "".$result['option2']."";
            echo "</label>";
            echo '<input type="radio" name="answer[]" id="question-1-answer-
C" value="C" />';
            echo '<label for="question-1-answer-C">';
            echo "".$result['option3']."";
            echo "</label>";
            echo '<input type="radio" name="answer[]" id="question-1-answer-
D" value="D" />';
            echo '<label for="question-1-answer-D">';
            echo "".$result['option4']."";
            echo "</label>";
            echo "</form>";
            }
            echo '<input type="Submit" value="Submit" name="submit" />';
            ?>
            </li>
            </ol>
            </form>

        </div>
    </div>

<div class="footer">
        <footer></footer> </div>
</div>
</body>

results.php

<?php
include('connect.php');
$sql="Select * FROM html";
$record=mysql_query($sql);
$result=mysql_fetch_assoc($record);
$total=0;
foreach($_POST['answer'] as $check) {
echo $check; 
}
echo "YOUR SCORE: ".$total;
?>

我知道这个结果文件现在什么都不做, foreach 部分将用于检查数据库中答案的每个答案,然后总计会增加,你现在看到的代码只是检查发送到 PHP 的值的数量 . . 目前我已经打印了6个问题,在为每个问题选择选项后,当我点击提交时,它会显示

AYOURSCORE: 0

这里'A'是“问题1”中选择的选项的值,其他问题的值将丢失 . 这是我面临的主要问题 .

我将在2天内提交此项目,因此将非常感谢任何帮助 . 谢谢

附:我是PHP的新手,对Java Script知之甚少或根本不了解 .

2 回答

  • 0

    我认为你使用的是两种形式 . 在一个表单中你重复多个但是以子表单形式你没有提供action =“” . 或者从循环内部删除表单 .

    <body>
    
    <?php
    include('connect.php');
    $sql="Select * FROM html";
    $record=mysql_query($sql);
    ?>      
    <div id="container">
            <div class="header">
                <span class="heading"><span class="C">O</span>NLINE <span 
    class="C">Q</span>UIZ <span class="C">S</span>YSTEM </span>
        <div class="logo"><img src="img/flogo.png" width="188" height="150" 
    alt="logo"></div>
    
        </div>
            <div class="center">
    
             <nav>
                <ul>
                <li style="margin-right:180px; height:50px;width:auto"><a 
    href="home.php">Username</a></li>
                <li><a href="Shome.php">Home</a></li>
                <li><a href="results.php">Results</a></li>
                <li><a href="welcome.php">Sign Out</a></li>
                </ul>
            </nav>
            <div id="page-wrap">
            <h1>HTML Quiz </h1>
                <form action="results.php" method="post" id="quiz">
                <ol>
                <li>
                <?php
                while($result=mysql_fetch_assoc($record))
                {
                echo "<h3>";
                echo "".$result['id'].". ".$result['question']."";
                echo "</h3>";
                echo '<input type="radio" name="answer[]" id="question-1-answer-
    A" value="A" />';
                echo '<label for="question-1-answer-A">';
                echo "".$result['option1']."";
                echo "</label>";
                echo '<input type="radio" name="answer[]" id="question-1-answer-
    B" value="B" />';
                echo '<label for="question-1-answer-B">';
                echo "".$result['option2']."";
                echo "</label>";
                echo '<input type="radio" name="answer[]" id="question-1-answer-
    C" value="C" />';
                echo '<label for="question-1-answer-C">';
                echo "".$result['option3']."";
                echo "</label>";
                echo '<input type="radio" name="answer[]" id="question-1-answer-
    D" value="D" />';
                echo '<label for="question-1-answer-D">';
                echo "".$result['option4']."";
                echo "</label>";
                }
                echo '<input type="Submit" value="Submit" name="submit" />';
                ?>
                </li>
                </ol>
                </form>
    
            </div>
        </div>
    
    <div class="footer">
            <footer></footer> </div>
    </div>
    </body>
    
  • 0

    我认为,问题出在输入名称中: name="answer[]" . 每个单选按钮的名称相同 - 所有问题都相同 . 我认为,在括号中添加索引会有所帮助

    问题一是 name="answer[1]"

    问题二是 name="answer[2]"

    等等 . w3schools TryIt Editor允许您使用输入 .

相关问题