Bonjour,
Me voila trainant déjà ca depuis quelques jours.
Voici une page php dynamique utilisable pour tout sujet différent, dépendant de la base de donnée et qui reforme un quiz.
Je n'arrive plus bien maintenant à tester si toute les réponses ont bien été répondue, donc si il manque des réponses (uniquement bouton radio) réafficher les boutons précédemment coché (je n'ai pas encore réalisé cette partie) et aussi afficher un petit message audessus disant de tout bien cocher.
Donc ici j'utilise des boutons radios avec comme nom le chiffre de la questions. Cela donne un tableau comme ca: $_POST['N']
J'ai testé ca, mais je suis encore loin de maitriser les languages web, et je ne sais pas si le foreach est bon (en fait, j'ai testé la valeur check, et malheureusement, dans n'importe quel cas, il passe d'office à true)
Voici le code:
J'ai vu que l'on pouvait utiliser javascript, mais j'aimerais si possible ne pas utiliser cette méthode la, est-ce possible ?
Merci d'avance
Me voila trainant déjà ca depuis quelques jours.
Voici une page php dynamique utilisable pour tout sujet différent, dépendant de la base de donnée et qui reforme un quiz.
Je n'arrive plus bien maintenant à tester si toute les réponses ont bien été répondue, donc si il manque des réponses (uniquement bouton radio) réafficher les boutons précédemment coché (je n'ai pas encore réalisé cette partie) et aussi afficher un petit message audessus disant de tout bien cocher.
Donc ici j'utilise des boutons radios avec comme nom le chiffre de la questions. Cela donne un tableau comme ca: $_POST['N']
J'ai testé ca, mais je suis encore loin de maitriser les languages web, et je ne sais pas si le foreach est bon (en fait, j'ai testé la valeur check, et malheureusement, dans n'importe quel cas, il passe d'office à true)
Voici le code:
<?php
//requete sql pour le titre
$re = mysql_query('SELECT quiz_titre FROM quiz, page, reponse, questions
WHERE quiz_id='.$_GET['q'].'
and quiz.quiz_page_id=page.page_id
and quiz.quiz_id=questions.quest_quiz_id
and reponse.rep_quest_id=questions.quest_id
');
$data = mysql_fetch_array($re);
// Titre de la page affichée
$page_title = $data['quiz_titre'];
// Header de la page
include ROOT.'Common/header.php';
?>
<div id="page">
<?php
//vérifie si connecté
if(get_session('is_connected'))
{
// ID du quizz dont on veut afficher les questions
$quiz_id = isset($_GET['q']) ? intval($_GET['q']) : get_session('quiz_id');
// On récupère les infos sur le quiz
$retour = mysql_query('SELECT * FROM quiz, page, reponse, questions
WHERE quiz_id='.$quiz_id.'
and quiz.quiz_page_id=page.page_id
and quiz.quiz_id=questions.quest_quiz_id
and reponse.rep_quest_id=questions.quest_id
');
$donnees = mysql_fetch_array($retour);
//on récupère les questions du quiz
$retourne = mysql_query('SELECT quest_num, quest_texte, quest_id FROM questions WHERE quest_quiz_id='.$donnees['quest_quiz_id']);
// Si le quiz n'est pas encore valider
if($donnees['quiz_valide'] == 0)
header('Location: index.php');
?>
<?php
//permet de tester si le formulaire a été rempli entierement
$check = false;
foreach($_POST as $array)
{
if(!isset($array))
{
$check=false;
}
else
{
$check=true;
}
}
$que=mysql_query("SELECT user_q_cpt FROM user_quiz, questions, quiz WHERE quiz.quiz_id=".$quiz_id." AND user_quiz.user_q_quest_id=questions.quest_id AND questions.quest_quiz_id=quiz.quiz_id AND user_q_user_id=".get_session('user_id')." AND user_q_date=(SELECT MAX(user_q_date) FROM user_quiz)") or die (mysql_error());
$come=mysql_fetch_array($que);
if($come['user_q_cpt']>=3)
{
echo show("Vous avez dépassé votre nombre d'essai authorisé pour ce quizz. Veuillez contacter un administrateur.");
}
else
{
if($check == false)
{echo "lol";}
if($check == true)
{echo "paslol";}
else
{echo "woot";}
if($check == false)
{
echo show("Veuillez répondre à toute les questions ");
}
if($check == true)
{
$essai=$come['user_q_cpt']+1;
}
?>
<form method="post" action="index.php?page=quiz&q=<?php echo show($quiz_id)?>" class="quiz">
<?php
$v=1; //compteur pour le tableau des bonnes réponses
$cpt=0; //compteur pour résultat en fonction des bonnes réponses
while($donne = mysql_fetch_array($retourne)) //boucle sur chaque question
{
echo "<fieldset><legend>";
echo show($donne['quest_num']);
echo show(" . ");
echo "</legend>";
//on récupère les bonnes réponses
$returne = mysql_query('SELECT rep_texte FROM reponse WHERE rep_corr=1 and rep_quest_id='.$donne['quest_id']);
$don = mysql_fetch_array($returne);
$table[$v]=$don['rep_texte'];
echo "<p><br>";
echo "<img src='Design/Images/question.png' height='20' width='20' > ";
echo show($donne['quest_texte']); ?></p>
<br>
<?php
//on récupère toutes les réponses et on boucle
$return = mysql_query('SELECT rep_texte, rep_num FROM reponse WHERE rep_quest_id='.$donne['quest_id']);
while($donnee = mysql_fetch_array($return))
{
?><p><input type="radio" name="<?php echo show($donne['quest_num'])?>" value="<?php echo show($donnee['rep_texte'])?>" />
<?php
echo show($donnee['rep_texte']);
if($check == true)
{
//on affiche bon ou pas bon
if($table[$v] == $donnee['rep_texte'])
{
?> <img src="Design/Images/bon.png"><?php
}
else
{
?> <img src="Design/Images/pasbon.png"><?php
}
}
?>
<br></p>
<?php
}
//Après chaque question on affiche la réponse du questionné
if($check == true)
{
//on insère les réponses du questionné dans la base de donnée
mysql_query("INSERT INTO user_quiz(user_q_date, user_q_texte, user_q_num, user_q_quest_id, user_q_user_id, user_q_cpt)
VALUES(NOW(),'".$_POST[$donne['quest_num']]."' , '".$donne['quest_num']."' , '".$donne['quest_id']."' , '".get_session('user_id')."' , '".$essai."')") or die (mysql_error());
?>
<p><br><br>
Votre réponse:
<?php
echo show($_POST[$donne['quest_num']]);
if($_POST[$donne['quest_num']] == $table[$v])
{
mysql_query("INSERT INTO user_quiz(user_q_corr) VALUES(1)") or die (mysql_error());
$cpt=$cpt+1; //compteur de bonnes réponses
}
echo "</p><br>";
}?>
<br>
</fieldset>
<br>
<?php $v=$v+1;
}
?>
<input type="submit" name="quiz_submit" value="Go">
</form>
<?php
if($check == true)
{
echo show("Vous avez effectué un score de ".$cpt."/6 avec ".$cpt." bonne(s) réponse(s)");
}
}
}
else //Si pas connecté
{
echo show("Veuillez vous connecter avec votre compte pour pouvoir réaliser l'exercice.");
}
?>
</div>
J'ai vu que l'on pouvait utiliser javascript, mais j'aimerais si possible ne pas utiliser cette méthode la, est-ce possible ?
Merci d'avance