Bonjour,
J'avais tenté de faire un quizz et j'avais trouvé une méthode utilisant des tableaux, cela fonctionne bien.
Le soucis c'est que c'était pas trop confortable et j'ai voulu mettre ça sur une base de données.
J'arrive à afficher les questions et les réponses, en les piochant au hasard dans la table, et je les place ensuite dans un array. Le soucis c'est pour les envoyer par formulaire. J'ai essayé de passer l'array dans un champ caché, en le convertissant avec serialize, mais rien n'y fait, une fois le formulaire envoyé, et même en faisant un unserialize, la page est vide
Je vous mets le code si vous avez un indice :
Jusque là ca va, génération des questions ok.
Et la plus rien ^^
A moins d'utiliser une session pour retenir l'array ?
Mais sans session ça m'irais mieux
Merci
Modifié par spike2 (06 Jun 2007 - 20:42)
J'avais tenté de faire un quizz et j'avais trouvé une méthode utilisant des tableaux, cela fonctionne bien.
Le soucis c'est que c'était pas trop confortable et j'ai voulu mettre ça sur une base de données.
J'arrive à afficher les questions et les réponses, en les piochant au hasard dans la table, et je les place ensuite dans un array. Le soucis c'est pour les envoyer par formulaire. J'ai essayé de passer l'array dans un champ caché, en le convertissant avec serialize, mais rien n'y fait, une fois le formulaire envoyé, et même en faisant un unserialize, la page est vide

Je vous mets le code si vous avez un indice :
<?php $page = basename($_SERVER['PHP_SELF']);
if (!isset($result)) {
$db=mysql_connect("***", "***", "***");
mysql_select_db("****", $db);
$sql='SELECT questions, reponses, reponses2, reponses3, solution1, explication FROM qcm ORDER BY RAND() LIMIT 7';
$req=mysql_query($sql) or die(mysql_error());
$quizz = array ();
while($tab= mysql_fetch_array($req,MYSQL_NUM)) {
$Servquestions = $tab[0];
$Servreponses = $tab[1];
$Servreponses2 = $tab[2];
$Servreponses3 = $tab[3];
$Servsolution1 = $tab[4];
$Servexplication = $tab[5];
array_unshift ($quizz, $tab);
// array_push($ServArray,$ServNom);
}
// on ferme la connexion à mysql
mysql_close();
print "<form action=\"$page\" method='post'>\n";
for ($i=0; $i<count($quizz); $i++) {
$nom="_".$i;
print '<blockquote><span class="vert">';
print "\t".$quizz[$i][0]."\n";
print '</span><br /><br />';
for ($j=1; $j<count($quizz[$i])-2; $j++) {
$quest=$quizz[$i][$j];
print "<input type='radio' name=\"$nom\" value=\"$j\" /> $quest<br />\n ";
}
print "</blockquote><hr />";
}
print "<input type='hidden' name='quizz' value=\"array(serialize($quizz)\" />"
print "<input type='hidden' name='result' value='voir' /><br />\n<center>";
print "<input type='submit' value='Vos résultats et la correction' /></center></form>\n";
}
Jusque là ca va, génération des questions ok.
else {
$quizz = array(unserialize(stripslashes($_POST['quizz'])));
print '<h4 align="center">Résultats du quizz</h4><br />';
$points=0;
for($i=0; $i<count($quizz); $i++) {
$nom="_".$i;
print '<blockquote><span class="vert">';
print "\t".$quizz[$i][0]."</span><br /><br />\n";
$numero_bonne=$quizz[$i][count($quizz[$i])-2]; /* avant dernière valeur du tableau */
$bonne=$quizz[$i][$numero_bonne]; /* Bonne réponse */
if ($$nom==$numero_bonne) {
print "Votre réponse <b><i>".$bonne."</i></b> est exacte.";
$points++;
}
else {
print "La bonne réponse est <b>".$bonne."</b> mais vous ";
if ($$nom=="") {
print "n'avez rien répondu.";
}
else {
print 'avez choisi la proposition" <b>'.$quizz[$i][$$nom].' "</b>.';
}
}
$commentaire=$quizz[$i][count($quizz[$i])-1]; /* dernière valeur du tableau */
print "<br />".$commentaire."<br />\n";
print "</blockquote><hr />\n";
$nom++;
}
if($points==count($quizz)) {
print"<br /><h4 align='center'>Félicitations vous avez tout juste !</h4>\n";
}
else {
print "<br /><h4 align='center'>Vous avez $points bonne";
if ($points>1) print "s";
print " réponse";
if ($points>1) print "s";
print " sur ".count($quizz)." questions.</h4>\n";
}
}
?>
Et la plus rien ^^
A moins d'utiliser une session pour retenir l'array ?
Mais sans session ça m'irais mieux

Merci
Modifié par spike2 (06 Jun 2007 - 20:42)