PHP/MySQL Quiz - retrieving random records

Questions about the MySQL, PostgreSQL, and most other databases, as well as using it with PHP can be asked here.

Moderator: General Moderators

Post Reply
paulobetto
Forum Newbie
Posts: 1
Joined: Sat May 03, 2008 12:52 pm

PHP/MySQL Quiz - retrieving random records

Post by paulobetto »

Hi everybody,

I have downloaded an old PHP/MySQL Quiz code from GetFreeSofts.com and it works well retrieving all records from a table. But when I try to retrieve random records (eg. 40 records of 100 records thar are stored in table) the answers aren't correctly.

Can anyone give me a help? Thanks!

Below are the table structure and the code.

Code: Select all

CREATE TABLE quiz (
id tinyint(4) NOT NULL auto_increment,
q text NOT NULL,
question text NOT NULL,
opt1 text NOT NULL,
opt2 text NOT NULL,
opt3 text NOT NULL,
answer text NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;

Code: Select all

<?php
 
include("contentdb.php");
 
$display = mysql_query("SELECT * FROM $table ORDER BY RAND() LIMIT=40",$db);
    
if (!$submit) {
 
 
    echo "<form method=post action=$PHP_SELF>";
    echo "<table border=0>";
 
    while ($row = mysql_fetch_array($display)) {
 
    $id = $row["id"];
    $question = $row["question"];
    $opt1 = $row["opt1"];
    $opt2 = $row["opt2"];
    $opt3 = $row["opt3"];
    $answer = $row["answer"];
 
    echo "<tr><td colspan=3><br><b>$question</b></td></tr>";
    echo "<tr><td>$opt1 <input type=radio name=q$id value=\"$opt1\"></td><td>$opt2 <input type=radio name=q$id value=\"$opt2\"></td><td>$opt3 <input type=radio name=q$id value=\"$opt3\"></td></tr>";
 
    }
 
    echo "</table>";
    echo "<input type='submit' value='See how you did' name='submit'>";
    echo "</form>";
 
}
 
elseif ($submit) 
 
{
 
    $score = 0;
    $total = mysql_num_rows($display);
        while ($result = mysql_fetch_array($display)) 
        
        
        {
        
            $answer = $result["answer"];
            $q = $result["q"];
            
        if ($$q == $answer) 
        {
        $score++; 
        }
    
    }
    
    echo "<p align=center><b>You scored $score out of $total</b></p>";
    echo "<p>";
    
    if   ($score == $total) {
    echo "Congratulations! You got every question right!";
    }
    elseif ($score/$total < 0.34) {
    echo "Oh dear. Not the best score, but don't worry, it's only a quiz.";
    }
    elseif ($score/$total > 0.67) {
    echo "Well done! You certainly know your stuff.";
    }
    else {
    echo "Not bad - but there were a few that caught you out!";
    }
 
echo "</p>";
 
echo "<p>Here are the answers:";
 
echo "<table border=0>";
$display = mysql_query("SELECT * FROM $table ORDER BY RAND() LIMIT=40",$db);
while ($row = mysql_fetch_array($display)) {
 
$question = $row["question"];
$answer = $row["answer"];
$q = $row["q"];
 
echo "<tr><td><br>$question</td></tr>";
 
if ($$q == $answer) 
        {
        echo "<tr><td>&raquo;you answered ${$q}, which is correct</td></tr>";
        }
elseif ($$q == "") {
echo "<tr><td>&raquo;you didn't select an answer. The answer is $answer</td></tr>";
}
else {
echo "<tr><td>&raquo;you answered ${$q}. The answer is $answer</td></tr>";
}
 
}
echo "</table></p>";
 
 
 
}
 
?>
 
 
 
User avatar
Kastor
Forum Newbie
Posts: 24
Joined: Thu May 01, 2008 2:29 am
Location: Grodno, Belarus
Contact:

Re: PHP/MySQL Quiz - retrieving random records

Post by Kastor »

Code: Select all

<?php
 
include("contentdb.php");
 
// LIMIT amount    OR    LIMIT from, amount
$display = mysql_query("SELECT * FROM $table ORDER BY RAND() LIMIT 40",$db);
// ...
?>
Post Reply