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

时间:2017-04-27 12:41:31

标签: php html mysql database forms

我正在使用PHP制作在线测验系统,我已将问题,选项和答案保存在数据库的表格中。在html页面中,我通过while循环打印问题和选项(选项是单选按钮)。我学习了如何将单选按钮值发送到PHP,但我遇到的问题是,只有第一个问题的选定选项会发送到PHP。例如,如果我在数据库中保存了两个问题并使用while循环打印在页面上,那么现在我选择option1 question1option2 { {1}},然后点击提交,这只会将值question2发布到option1,其他所选按钮值将丢失。如果答案正确,我希望所有这些值通过数据库检查,然后根据正确答案显示分数。

以下是我的html页面的代码,我发布了整个代码,但我认为您应该只检查PHP代码。

<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。目前我已经打印了6个问题,在为每个问题选择选项后,当我点击提交时,它会显示

PHP

这里&#39; A&#39;作为在&#34;问题1和#34;中选择的选项的值,其他问题的值将丢失。这是我面临的主要问题。

我已在2天内提交此项目,因此我们将非常感谢您提供帮助。 感谢

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

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

问题一

name="answer[1]"

问题二的

name="answer[2]"

等等。 w3schools TryIt Editor 可让您玩输入。