建立一个评估表格PHP

时间:2017-01-22 10:18:22

标签: php html mysql

我正在尝试为学生创建评估表,所有问题都存储在db中。我正在从db中检索它们,试图再次在db上存储每个问题的答案。应从单选按钮中选择所有答案,如下所示:

<?php

    $sql = "SELECT Q_body, Q_ID FROM s_evaluation_questions WHERE Ev_ID='1'";
    $result = $conn->query($sql);

    ?>

    <?php

    if ($result->num_rows > 0)
    {

    ?>
    <form action="AnswerS.php" method="POST"> 
    <table align="right"  id="keywords" cellspacing="0" cellpadding="0">
        <thead>
                <tr>
                    <th colspan="4">  </th>
                    <th>Question</th>
                </tr>
        </thead>    

     <tbody>
    <?php
        while($row = $result->fetch_assoc()) 
        {   $answer="s".$row["Q_ID"];
             ?> 
                    <tr>
                    <td>
                 <input type="hidden" name="Q_ID" value="<?php echo $row["Q_ID"]; ?>" >
                    <input type="radio" name=<?php echo $answer?> value="Bad" >Bad
                    <input type="radio" name=<?php echo $answer?> value="Good"> Good
                    <input type="radio" name=<?php echo $answer?> value="VeryGood"> Very Good
                    <input type="radio" name=<?php echo $answer?> value="Excellent"> Excellent</td>                     
                    <td align="right"> <?php echo $row["Q_body"]?></td>
                    </tr>

                    <?php   } ?>                

    </tbody>

        </table></br></br></br></br></br></br></br>
        <input type="submit" value="Send" />
                </form>
        <?php 

        ?></div> 
    <?php
    } else
    {echo "not allowed";}

在AnswerS.php页面上,我想将答案存储在db上,如下所示:

$UID='1';
$answer=$_POST['answer'];
$Q_ID= $_POST['Q_ID'];


    $sql = "INSERT INTO s_evaluation_answers(Q_ID, A_body, UID) VALUES($Q_ID, $answer, $UID) ";
$result = $conn->query($sql);

if ($result === TRUE) {
    echo "done" ;
    } 
    else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }   

但遗憾的是它不起作用!我试图追踪Q_ID的值,它只给出了最后一个问题ID而不是所有问题。 如何从每个问题的单选按钮存储所选值并将其存储为此问题的答案? (注意:所有问题都来自db)

感谢

1 个答案:

答案 0 :(得分:0)

如果您看到源html,则会发现您有许多名称为Q_ID的字段:

<input type="hidden" name="Q_ID" value="one id" >
<input type="hidden" name="Q_ID" value="another id" >
<input type="hidden" name="Q_ID" value="some more id" >

因此浏览器会向您发送Q_ID的最后一个值 - 在上面的情况下,它是some more id。 为避免这种情况,请在[]属性中使用name表示法:

<input type="hidden" name="Q_ID[]" value="one id" >
<input type="hidden" name="Q_ID[]" value="another id" >
<input type="hidden" name="Q_ID[]" value="some more id" >

之后,输出$_POST['Q_ID']将为您提供一个数组。您可以使用foreach对其进行迭代,并收集您需要的其他信息。像(简化)的东西:

foreach ($_POST['Q_ID'] as $q) {
     // answer will be stored in a `s . $q` value of POST
     $answer = $_POST['s' . $q];
     $sql = "INSERT INTO s_evaluation_answers(Q_ID, A_body, UID) VALUES($q, $answer, $UID) ";
     $result = $conn->query($sql);
}