IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Récupérer les réponses d'un QCM


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 246
    Points : 85
    Points
    85
    Par défaut Récupérer les réponses d'un QCM
    Bjr a tous, je souhaite faire un QCM sur mon site, j'ai créer un formulaire a partir de ma base de données MySql. J'ai une requête qui me récupère les questions et les réponses correspondante selon un niveau.
    Pour afficher les différents résultat de ma requête, j'ai une boucle qui me créer pour chaque question un formulaire. Mon problème se situe au niveau du choix de l'utilisateur, comment puis je récupéré pour chaque question, la réponse de l'utilisateur, pour pouvoir ensuite lui dire si il s'est trompé ou pas.
    Voici un extrait de mon code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <?php
    			$reponse = mysql_query("SELECT * FROM question, reponse WHERE question.Numero = reponse.Nquestion AND niveau =" .$niv)or die(mysql_error()); // Requête SQL
     
    			// On fait une boucle pour lister tout ce que contient la table :
    			while ($donnees = mysql_fetch_array($reponse) )
    			{
    		?>
    		<FORM>
    			<table>
    				<TR>	
    					<TD><?php echo $donnees['Intitule']; ?><br /></TD>
    				</TR>
    				<TR>
    					<TD><BLOCKQUOTE><input type="radio" name="choix" value="juste"><?php echo $donnees['LibelleJuste']; ?></BLOCKQUOTE></TD>
    				</TR>
    				<TR>
    					<TD><BLOCKQUOTE><input type="radio" name="choix" value="faux"><?php echo $donnees['LibelleFaux']; ?></BLOCKQUOTE></TD>
    				</TR>
    				<TR>
    					<TD><BLOCKQUOTE><input type="radio" name="choix" value="faux1"><?php echo $donnees['LibelleFaux1']; ?></BLOCKQUOTE></TD>
    				</TR>
    			</table>
    		</FORM>
    		<?php
    			}
    		?>
    		<form METHOD="POST" ACTION="verification.php">
    			<table>
    				<TR>
    					<TD align = "center"><INPUT type="submit" value="Valider"></TD>
    				</tr>
    			</table>
    		</form>
    	<?php
    		mysql_close(); // Déconnexion de MySQL
    	?>

  2. #2
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Il faut que toutes les questions ainsi que le bouton submit soient dans le même formulaire, remplace les name de tes boutons radios par "question1", "question2", ...
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    <FORM>
    <?php
    while ($donnees = mysql_fetch_array($reponse) )
    			{
    		?>
    			<table>
    				<TR>	
    					<TD><?php echo $donnees['Intitule']; ?><br /></TD>
    				</TR>
    				<TR>
    					<TD><BLOCKQUOTE><input type="radio" name="<?php echo $donnees['id_question']; ?>" value="juste"><?php echo $donnees['LibelleJuste']; ?></BLOCKQUOTE></TD>
    				</TR>
    				<TR>
    					<TD><BLOCKQUOTE><input type="radio" name="<?php echo $donnees['id_question']; ?>" value="faux"><?php echo $donnees['LibelleFaux']; ?></BLOCKQUOTE></TD>
    				</TR>
    				<TR>
    					<TD><BLOCKQUOTE><input type="radio" name="<?php echo $donnees['id_question']; ?>" value="faux1"><?php echo $donnees['LibelleFaux1']; ?></BLOCKQUOTE></TD>
    				</TR>
    			</table>
    		<?php
    			}
    		?>
    			<table>
    				<TR>
    					<TD align = "center"><INPUT type="submit" value="Valider"></TD>
    				</tr>
    			</table>
    		</form>
    	<?php
    		mysql_close(); // Déconnexion de MySQL
    	?>
    Ensuite dans la page suivante tu récupère toutes les réponses comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $reponse1 = $_POST['question1'];
    $reponse2 = $_POST['question2'];
    Par contre évite de mettre juste et faux comme valeur dans tes radios car en affichant la source de la page tout le monde pourra voir les réponses, je te conseil de mettre plutôt des valeurs à 1, 2, et 3 et dans ta base de données tu met la valeur qui correspond à la réponse de la question

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 56
    Points : 47
    Points
    47
    Par défaut
    Bonjour,

    Une modeste contribution : ton premier formulaire ne fonctionnera pas en l'état... il manque les attributs minimums nécessaires à son fonctionnement dans la balise <form>.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form action="nom_de_la_page_de_traitement" method="post">
    La méthode peut-être get mais post est plus sécurisée.

    Dernier détail, même si ça fonctionne sans, il est actuellement recommandé par le W3c d'écrire les balises en minuscules dans le cadre d'un respect syntaxique du langage xhtml.

    Bonne soirée,

    Smiff.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 246
    Points : 85
    Points
    85
    Par défaut
    J'ai bien pris en compte les remarques précedentes, j'ai ajouter un compteur dans ma bouche que est concatené avec le nom de mon bouton a chaque passage j'ai donc un nom différent pour chaque groupe de bouton.
    Mais au moment de récuperé les reponses de l'utilisateur, je souhaite mettre ses réponse dans un tableau, donc je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $rep0 = isset ($_POST['choix0']) ? $_POST['choix0']: "";
    $rep1 = isset ($_POST['choix1']) ? $_POST['choix1']: "";
    $rep2 = isset ($_POST['choix2']) ? $_POST['choix2']: "";
    $rep3 = isset ($_POST['choix3']) ? $_POST['choix3']: "";
    $rep4 = isset ($_POST['choix4']) ? $_POST['choix4']: "";
    $rep5 = isset ($_POST['choix5']) ? $_POST['choix5']: "";
    $rep6 = isset ($_POST['choix6']) ? $_POST['choix6']: "";
    $rep7 = isset ($_POST['choix7']) ? $_POST['choix7']: "";
    $rep8 = isset ($_POST['choix8']) ? $_POST['choix8']: "";
    $rep9 = isset ($_POST['choix9']) ? $_POST['choix9']: ""; 
    $reponses = array($rep0, $rep1, $rep2, $rep3, $rep4, $rep4, $rep5, $rep6, $rep7, $rep8, $rep9);
    Quant s'affiche mon tableau, il est vide :s Je ne comprend pas pourquoi ?

  5. #5
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 394
    Points : 15 755
    Points
    15 755
    Par défaut
    utilise ce code pour voir ce qu'il se trouve dans le tableau $_POST

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 246
    Points : 85
    Points
    85
    Par défaut
    C'est mon $_post qui ne ramene rien
    Je peut vous réexpliquer concrétement sur une page j'ai mon formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    		<FORM METHOD="POST" ACTION="verification.php">
    			<table>
    			<?php
    			$reponse = mysql_query("SELECT * FROM question, reponse WHERE question.Numero = reponse.Nquestion AND niveau =" .$niv)or die(mysql_error()); // Requête SQL
    			$i = 0;
    			$_POST['niveau'] = $niv;
    			// On fait une boucle pour lister tout ce que contient la table :
    			while ($donnees = mysql_fetch_array($reponse) )
    			{
    			?>
    				<TR>	
    					<TD><?php echo $donnees['Intitule']; ?><br /></TD>
    				</TR>
    				<TR>
    					<TD><BLOCKQUOTE><input type="radio" name="choix<?php echo $i?>" value="juste"><?php echo $donnees['LibelleJuste']; ?></BLOCKQUOTE></TD>
    				</TR>
    				<TR>
    					<TD><BLOCKQUOTE><input type="radio" name="choix<?php echo $i?>" value="faux"><?php echo $donnees['LibelleFaux']; ?></BLOCKQUOTE></TD>
    				</TR>
    				<TR>
    					<TD><BLOCKQUOTE><input type="radio" name="choix<?php echo $i?>" value="faux1"><?php echo $donnees['LibelleFaux1']; ?></BLOCKQUOTE></TD>
    				</TR>
    		<?php
    			$i = $i + 1;
    			}
    		?>
    				<TR>
    					<TD align="center"><a href="verification.php?mavar=<?php echo $niv?>"><INPUT type="submit" value="Valider"></a></TD>
    				</tr>
    			</table>
    		</form>
    et sur un autre je voudré récuperé les reponses de l'utilisateur pour chaque question (10)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $rep0 = $_POST['choix0'];
    $rep1 = $_POST['choix1'];
    $rep2 = isset ($_POST['choix2']) ? $_POST['choix2']: "";
    $rep3 = isset ($_POST['choix3']) ? $_POST['choix3']: "";
    $rep4 = isset ($_POST['choix4']) ? $_POST['choix4']: "";
    $rep5 = isset ($_POST['choix5']) ? $_POST['choix5']: "";
    $rep6 = isset ($_POST['choix6']) ? $_POST['choix6']: "";
    $rep7 = isset ($_POST['choix7']) ? $_POST['choix7']: "";
    $rep8 = isset ($_POST['choix8']) ? $_POST['choix8']: "";
    $rep9 = isset ($_POST['choix9']) ? $_POST['choix9']: ""; 
    $reponses = array($rep0, $rep1, $rep2, $rep3, $rep4, $rep4, $rep5, $rep6, $rep7, $rep8, $rep9);
    et mes $re ... sont vide

  7. #7
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Il faut un point-virgule après le echo dans les name de tes radios :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="radio" name="choix<?php echo $i; ?>" value="faux1">

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/02/2012, 17h56
  2. limiter les réponses pour un QCM
    Par debutant75013 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 16/07/2011, 15h59
  3. Réponses: 2
    Dernier message: 16/12/2009, 19h13
  4. [MySQL] Récupérer les bonnes réponses d'un formulaire
    Par ghyosmik dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/07/2008, 11h58
  5. [formulaire (QCM)] denombrer les réponses
    Par namstou3 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/07/2007, 17h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo