Vérifier les réponses d'un quiz

Fermé
meskina Messages postés 50 Date d'inscription vendredi 22 juillet 2011 Statut Membre Dernière intervention 26 septembre 2013 - 19 nov. 2012 à 13:19
 Utilisateur anonyme - 23 nov. 2012 à 18:38
Bonjour,

Je suis entrain de programmer un quiz simple en PHP,j'ai presque avancé jusqu'à la page où l'utilisateur trouve les questions à répondre,là j'ai crée un systéme de pagination pour afficher une question par page,avec troix radio btn afin de cocher la bonne réponse.
Mon problème se trouve dans la page de vérification de réponse de l'utilisateur,cad:comment puis-je vérifier que ce qui est cocher est c'est bien la bonne réponse?? sachant que je peux pas par exemple mettre dans le code if($_POST['choix']=="machan" car mon quiz est dynamique,cad j'ai donné à l'administrateur la main dajouter des questions,avec des réponses..donc je peux pas pas taper la réponse dans le code!
Alors SVP comment je peux savoir la valeur cocher et la comparer s'elle est la bonne réponse??
J'espère c'est assez claire,merci pour votre aide que j'ai en ai besoin vraiment!surtou que 'jai pas trouvé un cas pareil sur le net avec une db!

A voir également:

5 réponses

Utilisateur anonyme
19 nov. 2012 à 13:22
Bonjour,
pour ça il faut utilisé une base de donnée.
Tu récupère les infos de ta base de donnée et tu les mets dans ton if.


0
meskina Messages postés 50 Date d'inscription vendredi 22 juillet 2011 Statut Membre Dernière intervention 26 septembre 2013
19 nov. 2012 à 13:32
oh merci pour votre reponse rapide,alors oui j'ai crée une base de données,dont y avait aussi deux tables:questions et table reponses.comme suite:
-- Structure de la table 'questions'
--

CREATE TABLE IF NOT EXISTS 'questions' (
  'id_question' int(11) NOT NULL AUTO_INCREMENT,
  'choix1' varchar(255) NOT NULL,
  'choix2' varchar(255) NOT NULL,
  'choix3' varchar(255) NOT NULL,
  'libelle' varchar(255) NOT NULL, //CONTIENT LA QUESTION
  'reponse' varchar(255) NOT NULL,
  PRIMARY KEY ('id_question')
)


-- Structure de la table 'reponses'
--

CREATE TABLE IF NOT EXISTS 'reponses' (
  'id_reponse' int(11) NOT NULL AUTO_INCREMENT,
  'choix' varchar(255) NOT NULL,
  'score' int(11) NOT NULL,
  'reponse' varchar(255) NOT NULL,
  PRIMARY KEY ('id_reponse')
) 


Sur la page verifier.php,l'echo $_POST['choix'] ; m'affiche bien choix1 ou choix2 ou choix3 selon ce qui est cocher!
mais comment savoir la valeur de ce qui est cocher pour que la compare avec reponse??
0
Utilisateur anonyme
19 nov. 2012 à 13:40
J'ai un peu de mal à comprendre à quoi servent certain champs.

Par exemple 'choix1' sert à quoi?
Et la table réponse en fait c'est toutes les réponses faites pas l'utilisateur?
0
Salut, en même temps que vous récupérez la question il vous faut la réponse.
Une fois ceci fait les comparer.

sachant que je peux pas par exemple mettre dans le code if($_POST['choix']=="machan"

Si tout à fait mais comme ceci:

if(($_POST['choix']==$reponse){
//on incrémente le compteur réponse juste
}else{
//facultatif on incrémente le compteur réponse fausse, le mieux c'est d'avoir total
// réponses et total réponses bonne qui permettra de calculer les réponses fausses
};

//NOTE: Il vous faudra donc pour chaque question: interroger la base pour la question, les choix multiples éventuels, la valeur de la réponse elle peut être obtenue plus tard(vous transférez uniquement l'identifiant de la question dans un champ input type="hidden" ou alors directement la réponse) puisqu'elle intervient non dans la page du formulaire mais celle du traitement.

Voilà en dynamique on fait les comparaisons avec des variables qui contiennent des valeurs sur la base.


Le soucis maintenant est de savoir comment vous aller enregistrer les réponses justes:
Vous pouvez faire une variable de session, solution peu commode car soumise aux aléa de la durée de la session, du nombre d'utilisateur faisant un questionnaire en même temps etc...
Vous opuvez aussi enregistrer un fichier texte, xml ou csv; solution alternative quoique satisfaisante.
Vous pouez aussi enregistrer les résultats dans une table de données que vous ajoutez à votre base, la meilleure solution et la plus viable si vous souhaitez faire quelque chose de durable pour votre site



surtou que 'jai pas trouvé un cas pareil sur le net avec une db!
Alors vous n'avez pas cherché longtemps, c'est le cas de toutes les db et le principe même des pages dynamiques: On fait une page une fois en utilisant des variables contenant les valeurs sur la base, toutes les pages seront différentes pour l'affichage mais utilise le même script.
Dans votre cas ce sont les variables de la question et de la réponse juste qui permettent de rendre les pages dynamiques puisque leur contenu est différent sur chaque ligne de la table.
0
meskina Messages postés 50 Date d'inscription vendredi 22 juillet 2011 Statut Membre Dernière intervention 26 septembre 2013
19 nov. 2012 à 13:50
choix1,choix2,choix3 se sont des champs que l'admin remplie pour donner à l'utilisateur des choix(radion btn),par exemple la question c'est quoi le capital de France?choix1:paris,choix2:casa...
Pour Table reponse c'est là où la bonne réponse est saisie
0
Utilisateur anonyme
19 nov. 2012 à 14:04
Alors faut modifié comme ceci

:
CREATE TABLE IF NOT EXISTS 'reponses' (
'id_reponse' int(11) NOT NULL AUTO_INCREMENT,
'id_question' int(11) NOT NULL,
'choix' varchar(255) NOT NULL,
'score' int(11) NOT NULL,
'reponse' varchar(255) NOT NULL,
PRIMARY KEY ('id_reponse')
)


Et à chaque fois qu'une nouvelle question est posé il faut noté l'id dans la table "reponses".

Il faudra donc récupéré l'id de la question dans une variable.





<?php

$idquestion

mysql_connect("host","user","pass");
mysql_select_db("tadb");
$retour = mysql_query("SELECT * FROM reponses WHERE id_question='".$idquestion.'"");
while ($donnees = mysql_fetch_array($retour))
{
if(!empty($_POST['choix']))
{
if($_POST['choix']== $donnees['choix'])
{
echo"Félicitation vous pouvez passer à la question suivant";

}
else
{
echo"Perdu!"

}
}

else
{
echo"Vous n'avez pas répondu";
}


}


?>



Il me semble que ceci devrais fonctionner en supposant que dans la table "réponse" la colonne "choix" soit le nom de la case à la quel il faut répondre.

J'espère que cela va fonctionner car j'ai fait ça sans vérifié.
Si tu as un problème ou une erreur dit le moi.
En revanche tu dois y apporter des modifications.
0
meskina Messages postés 50 Date d'inscription vendredi 22 juillet 2011 Statut Membre Dernière intervention 26 septembre 2013
19 nov. 2012 à 17:28
Re!
donc j'ai réussi à récupérer l'id à l'aide d'une requete comme suite:
(page ajout_question.php):

$query = mysql_query("insert into questions (libelle,choix1,choix2,choix3) values ('".$libelle ."','".$choix1."','".$choix2."','".$choix3."')");
	
//POUR RECUPERER SON ID
	$retour = mysql_query(" SELECT  MAX(id_question) AS maxi FROM questions ");
	
while ($donnees = mysql_fetch_array($retour))
{ 
$maxi = $donnees['maxi']; 
//echo $maxi ;
//POUR ENREGISTRER SON ID
$reketa =  mysql_query("insert into reponse (id_question) values ('".$maxi."')");
 }
	?>
<script>
	alert("enregistrement de question faite!");
				</script>

D'autre part,j'ai sauté à la page verifier_reponse.php et j'ai ajouté:
<?php
echo $maxi ;
//BIEN SUR IL CONNAIT PAS CE VARIABLE LA!
$retourid = mysql_query(" SELECT * FROM reponse WHERE id_question='".$maxi."' ");
while ($donnees = mysql_fetch_array($retourid))
{
if(!empty($_POST['choix'])) {
if($_POST['choix']== $donnees['reponse'])
{
echo "Félicitation vous pouvez passer à la question suivant!";
}

else
{
echo "faux!" ;
}
}
}
?>
ça pour but de récupérer l'id du question courante et le stocker pour que je puisse comparer sa réponse avec celle stoqué dans la table reponses!
je suis sur le bon chemin dèja ??
0
Utilisateur anonyme
19 nov. 2012 à 17:33
C'est un script de base.
Il permet de vérifié si c'est une bonne réponse.
Bien sur c'est un script à amélioré par tes soins.
Si tu ne connais pas le php je te conseil le site du zéro.
Evidemment qu'il ne connais pas la variable.
Cette variable récupère l'id de la question poser. Mais pour cela il faut la récupéré .Soit avec une variable de session soit par un champs hidden (attention aux failles de sécurités).
0
meskina Messages postés 50 Date d'inscription vendredi 22 juillet 2011 Statut Membre Dernière intervention 26 septembre 2013
19 nov. 2012 à 18:31
non ça va merci j'ai récupéré l'id de la question en cours aussi je recupére maintennat bien la valeur du radio btn coché par:
<input type="radio" name="choix" id= "choix2" value="<?php echo $fetch['choix2'];?>">
j'utilise plus loin son echo qui s'affiche bien!
Le seul souci qui me reste c'est que dans la condition il m'affiche toujours faux meme si le choix est correcte!!!
0
Utilisateur anonyme
19 nov. 2012 à 19:53
Envoi moi tout les scripts que tu as pour que j'arrive à voir plus clairement et pour t'aider au mieux.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
meskina Messages postés 50 Date d'inscription vendredi 22 juillet 2011 Statut Membre Dernière intervention 26 septembre 2013
19 nov. 2012 à 15:41
ok merci pour votre aide,je vais essayé ça et je te met au courant
0