Tenho um código de uma página de quiz que funciona normalmente puxando TODOS os registro de uma tabela. Porém, gostaria que essa mesma página puxasse apenas uma parte dos registros (ex. de 100 registros existentes na tabela, a página puxa 40).
Já utilizei ORDER by RAND() LIMIT 40, porém quando a página mostra as respostas elas vêm embaralhadas (inclusive respostas de outras perguntas existentes na tabela). Acho que é por causa do segundo query.
Alguém pode dar uma luz? Obrigado!
Segue estrutura da tabale e código da página:
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; [/codebox]
[codebox] <?php
include("contentdb.php");
$display = mysql_query("SELECT * FROM $table ORDER BY id",$db);
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 id",$db); while ($row = mysql_fetch_array($display)) {
if ($$q == $answer) { echo "<tr><td>»you answered ${$q}, which is correct</td></tr>"; } elseif ($$q == "") { echo "<tr><td>»you didn't select an answer. The answer is $answer</td></tr>"; } else { echo "<tr><td>»you answered ${$q}. The answer is $answer</td></tr>"; }
Pergunta
paulobetto
Olá pessoal,
Tenho um código de uma página de quiz que funciona normalmente puxando TODOS os registro de uma tabela. Porém, gostaria que essa mesma página puxasse apenas uma parte dos registros (ex. de 100 registros existentes na tabela, a página puxa 40).
Já utilizei ORDER by RAND() LIMIT 40, porém quando a página mostra as respostas elas vêm embaralhadas (inclusive respostas de outras perguntas existentes na tabela). Acho que é por causa do segundo query.
Alguém pode dar uma luz? Obrigado!
Segue estrutura da tabale e código da página:
<?php
include("contentdb.php");
$display = mysql_query("SELECT * FROM $table ORDER BY id",$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 id",$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>»you answered ${$q}, which is correct</td></tr>";
}
elseif ($$q == "") {
echo "<tr><td>»you didn't select an answer. The answer is $answer</td></tr>";
}
else {
echo "<tr><td>»you answered ${$q}. The answer is $answer</td></tr>";
}
}
echo "</table></p>";
}
?>
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados