Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

paulobetto

Quiz em PHP + MySQL

Recommended Posts

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:

 

CODE

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

<?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>";

 

 

 

}

 

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, neste segundo SELECT você precisa mandar um parametro WHERE.

 

Seria algo do genero.

 

 

 

SELECT * FROM TABELA WHERE ID_PERGUNTA = 1;

 

 

Tenho uma duvida, as respostas estao em tabelas separadas ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.