0

我刚开始学习php。我有一个测验,是否每个正确答案都会得到不同的分数。我在互联网上查看,但直到现在我都找不到解决方案。这个 SO 问题对我有帮助,但另一种方式是我无法获得总分,这就是我正在寻找的。我想在同一页面上显示总分。这是代码有问题。里面有一些荷兰语,但这不是问题:

    <?php
    $strSQL="select vraag, vraagnummer, image_1, image_2, image_3, image_4, punten, antwoord ".
    "from tbvragen as v ".
    "inner join tbpunten as p ".
    "on v.id_ptn = p.id_ptn ".
    "inner join tbantwoorden as a ".
    "on v.id_antw=a.id_antw ";

    $rs = mysql_query($strSQL, $db);
    while ($r = mysql_fetch_array($rs))
    {
    ?>

    <form>
    <h3>Vraag <?php echo($r["vraagnummer"]);?>  <?php echo($r["vraag"]);?><span>(<?echo($r["punten"]); ?> punten)</span>
    </h3>
    <ul>
    <li><img src="images/<?echo($r["image_1"]); ?>"  /><input type="radio" name="keuze" value="A" /><label>A</label></li>
     <li><img src="images/<?echo($r["image_2"]); ?>" /><input type="radio" name="keuze" value="B" /><label>B</label></li>
    <li><img src="images/<?echo($r["image_3"]); ?>" /><input type="radio" name="keuze" value="C"/><label>C</label></li>
     <li><img src="images/<?echo($r["image_4"]); ?>" /><input type="radio" name="keuze" value="D" /><label>D</label></li>
     <li><input type="hidden" name="keuze" value="<?php echo($r["antwoord"]);?> " /></li>            
    </ul>
   </form>

   <?php
    }

    ?>
   <form name="quiz" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post"><input type="submit" 
   class="button" value="verstuur je antwoorden" name="verstuur" /></form>






     <?php
        $rs = mysql_query($strSQL, $db);
   while ($r = mysql_fetch_array($rs))
  {


    $beantwoord=$r["vraag".isset($_POST['keuze'])];
    $juistAntw=$r["antwoord"];
    if ($r["vraagnummer"]==$r["antwoord"]) {
                echo $r["punten"].'<br />';
    }

    }
    echo ("je hebt".$r["punten"]." punten");
    ?>



      <?php

      mysql_free_result($rs);
      mysql_close($db);    
      ?>   
4

1 回答 1

0

如果您查看 php 代码的输出 html 源代码,您将能够看到大部分错误。

首先,您将每个问题/答案集包装在其自己的<form></form>中,但您的提交按钮位于单独的<form></form>中,因此您的任何答案都不会发布,因为它们不在带有操作和提交按钮的表单中。

其次,每个收音机都有name="keuze",因此无法根据问题检查他们的答案,因为只有最后一个检查的收音机元素会设置keuze

第三,您在隐藏元素中提供了正确答案name="keuze",因此即使没有第二个问题,您也会用正确答案覆盖他们的回复,他们可以通过查看页面源代码轻松获得答案。

第四,很难理解你在总分代码中试图做什么。为了得到总分,你需要先查看表单是否已经提交 - if(isset($_POST['verstuur']))。然后,您需要将他们的回答与正确答案进行比较,如果相同并且问题指向总分变量。

试图解决上述所有问题,尝试做这样的事情 -

<?php
$strSQL="select vraag, vraagnummer, image_1, image_2, image_3, image_4, punten, antwoord ".
"from tbvragen as v ".
"inner join tbpunten as p ".
"on v.id_ptn = p.id_ptn ".
"inner join tbantwoorden as a ".
"on v.id_antw=a.id_antw ";

$rs = mysql_query($strSQL, $db);

// check to see if they submitted their quiz
if(isset($_POST['verstuur'])){
// a variable for total points
$totaalpunten = 0;
while ($r = mysql_fetch_array($rs))
 {
      // give the question number
    echo "Vraag ".$r["vraagnummer"])." - ";
      // check if their reply is the same as the correct answer
    if ($_POST["antwoord".$r["vraagnummer"]]==$r["antwoord"]) {
             // echo the points they got for this question
            echo $r["punten"]." puntens<br />";
             // add the points to the total points
            $totaalpunten += $r["punten"];
    }
    else {   
            // if wrong show 0 points
            echo "0 puntens<br />";
}
 // give their total score
echo "je hebt ".$totaalpunten." punten";

}
 // if the quiz was not submitted, show the quiz
else { ?>
<form name="quiz" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<?php
while ($r = mysql_fetch_array($rs))
{ ?>
      <fieldset>
      <h3>Vraag <?php echo($r["vraagnummer"]);?>  <?php echo($r["vraag"]);?><span>(<?echo($r["punten"]); ?> punten)</span></h3>
      <ul>
          <li><img src="images/<?echo($r["image_1"]); ?>"  /><input type="radio" name="antwoord<?php echo($r["vraagnummer"]);?>" value="A" /><label>A</label></li>
          <li><img src="images/<?echo($r["image_2"]); ?>" /><input type="radio" name="antwoord<?php echo($r["vraagnummer"]);?>" value="B" /><label>B</label></li>
          <li><img src="images/<?echo($r["image_3"]); ?>" /><input type="radio" name="antwoord<?php echo($r["vraagnummer"]);?>" value="C"/><label>C</label></li>
          <li><img src="images/<?echo($r["image_4"]); ?>" /><input type="radio" name="antwoord<?php echo($r["vraagnummer"]);?>" value="D" /><label>D</label></li>            
      </ul>
      </fieldset>
<?php  }    ?>
<input type="submit" class="button" value="verstuur je antwoorden" name="verstuur" />
</form>
<?php
}
mysql_free_result($rs);
mysql_close($db);    
?>   
于 2013-05-09T23:13:50.870 回答