sql >> Database teknologi >  >> Database Tools >> phpMyAdmin

Hvordan kan jeg se, om brugerens valg i quizzen er korrekt?

Her er endnu et forsøg på at hjælpe dig.

Jeg skrev faktisk en "komplet løsning", og opdagede i processen et par små fejl i din kode - plus nogle ting, jeg bare ikke kunne forstå.

Hovedfejl:alle dine radioknapper har samme værdi ($x), så uanset hvilken knap du trykker på for spørgsmål 1, er svaret "1" osv. Der var andre ting, du gjorde, som jeg ikke helt kunne finde ud af - så det, jeg gjorde i stedet, var at skabe et simpelt flow - en side, der stiller spørgsmålene, og en anden, der evaluerer resultaterne.

Spørgsmålsside (jeg slørede adgangsparametre til min database - nej, jeg bruger ikke "adgangskode" som min adgangskode!):

<html>
<body>
<form action="./evaluate.php" method="post">
<?php
$server = mysql_connect ('localhost', 'username, 'password');
mysql_select_db("questionnaire", $server);

$question = mysql_query("SELECT * FROM `Questions`;");
$x = 0;
while ($row = mysql_fetch_assoc($question))
{
   echo $row['question'] . '<br />';
   echo '<input type="radio" name="a'.$x.'" value=1 />' .$row['answer1'] . '<br />';
   echo '<input type="radio" name="a'.$x.'" value=2 />' .$row['answer2'] . '<br />';
   echo '<input type="radio" name="a'.$x.'" value=3 />' .$row['answer3'] . '<br />';
   echo '<input type="radio" name="a'.$x.'" value=4 />' .$row['answer4'] . '<br />';
   $x = $x + 1;

}
mysql_close($server);
?>

<input type="submit" name="Submit" value="Submit" />
<br>
</form>
</body>
</html>

og evaluate.php:EDIT:Jeg har ændret koden lidt for at gøre outputtet "renere", og tilføje et rødt/grønt touch for at vise spørgsmål, der var blevet besvaret korrekt og forkert. Selvfølgelig kan du tage disse ting meget længere, hvis du vil...

<html>
<body>

<?php
$server = mysql_connect ('localhost', 'username', 'password');
mysql_select_db("questionnaire", $server);

$question = mysql_query("SELECT * FROM `Questions`;");
$x = 0;
$score = 0;
while ($row = mysql_fetch_assoc($question))
{
    echo $row['question'] . '?<br />';

    $answered = $row['answer'.$_POST['a'.$x]] ;
    $correct = $row['correct'] ;

    if ($answered == $correct ) {
        $score++;
        $acolor = 'green' ;
    }
    else {
        $acolor = 'red' ;
    }

    echo 'you answered <font color=' . $acolor . '>' . $answered . '<font color=black> <br />';


    echo 'the correct answer was ' . $correct . '<br />' ;
    echo '-------------------------------------- <br />' ;

    $x = $x + 1;
}
echo 'You had a total of ' . $score . ' out of ' . $x . ' questions right!';
mysql_close($server);
?>

</body>
</html>

Dette gav (til et simpelt flervalg med tre spørgsmål, jeg lavede) de forventede resultater. Fortæl mig, om det virker for dig!




  1. Kan jeg bruge transaktioner med ALTER TABLE?

  2. Hvordan oprettes forbindelse til din Prod/Dev-database ved hjælp af phpMyAdmin?

  3. MySql #1243 fejl under udførelse af det gennem phpMyAdmin

  4. Bruger tabel lige efter oprettelse af den:objekt eksisterer ikke