Bloqué sur la création d'un QCM depuis des semaines
Bonjour,
Voilà plusieurs mois que je cherche à créer un QCM pour mon site.
J'ai suivi plusieurs tutos, regardé les forums etc... mais rien y fait je reste toujours bloqué.
Voila mon code :
Les question sont dans la base de données.
Elle est faite comme ceci :
Ma BDD QCM
Quand je consulte la source d'un fichier html le résultat donne ceci :
Mon problème est que je ne sais pas comment vérifier si la réponse est bonne en fonction du numéro de la question.
Car le input ne va poster que le numéro de la réponse et pas le numéro de la question.
Je pensais m'orienter vers ceci pour chacune des réponses possible :
Ma question est :
Comment savoir qu'il s'agit de la question 1 et donc pouvoir mettre le bon $_POST['quest??']
J'espère avoir était précis dans mes explications.
Merci d'avance si quelqu'un pouvait me sortir de cette galère :( .
Voilà plusieurs mois que je cherche à créer un QCM pour mon site.
J'ai suivi plusieurs tutos, regardé les forums etc... mais rien y fait je reste toujours bloqué.
Voila mon code :
- <form method="post" id="qcm" action="<?php echo $_SERVER['REQUEST_URI'];?>">
- <?php
- $num_question = 1;
- include('include/cnx_mysql.php');
- $sql = 'SELECT * FROM qcm ORDER BY id ASC limit 0,10';
- $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
- while ($data = mysql_fetch_assoc($req)) {
- $num_rep = $data['num_rep'];
- echo '<p class="question_qcm">'.$num_question.') '.$data['question'].'</p>';
- ?>
- <br />
- <div class="reponses_qcm">
- <p class="reponses_qcm">
- <ul>
- <li><input type="radio" name="quest<?php echo $data['id'];?>" value="rep1" /><?php echo $data['rep1'];?></li>
- <li><input type="radio" name="quest<?php echo $data['id'];?>" value="rep2" /><?php echo $data['rep2'];?></li>
- <li><input type="radio" name="quest<?php echo $data['id'];?>" value="rep3" /><?php echo $data['rep3'];?></li>
- <li><input type="radio" name="quest<?php echo $data['id'];?>" value="rep4" /><?php echo $data['rep4'];?></li>
- </ul>
- </p>
- </div>
- <?php
- $num_question++;
- ;}
- ?>
- <input class="send" type="submit" value="Résultat" /><br />
- </form>
Les question sont dans la base de données.
Elle est faite comme ceci :
Ma BDD QCM
Quand je consulte la source d'un fichier html le résultat donne ceci :
- <form method="post" id="qcm" action="/jsp33127/qcm.html">
- <p class="question_qcm">1) Combien font 11x2 ?</p><br />
- <div class="reponses_qcm">
- <p class="reponses_qcm">
- <ul>
- <li><input type="radio" name="quest1" value="rep1" />21</li>
- <li><input type="radio" name="quest1" value="rep2" />13</li>
- <li><input type="radio" name="quest1" value="rep3" />22</li>
- <li><input type="radio" name="quest1" value="rep4" />44</li>
- </ul>
- </p>
- </div>
- <p class="question_qcm">2) Combien font 152-84 ?</p><br />
- <div class="reponses_qcm">
- <p class="reponses_qcm">
- <ul>
- <li><input type="radio" name="quest3" value="rep1" />75</li>
- <li><input type="radio" name="quest3" value="rep2" />68</li>
- <li><input type="radio" name="quest3" value="rep3" />56</li>
- <li><input type="radio" name="quest3" value="rep4" />61</li>
- </ul>
- </p>
- </div>
- <input class="send" type="submit" value="Résultat" /><br />
- </form>
Mon problème est que je ne sais pas comment vérifier si la réponse est bonne en fonction du numéro de la question.
Car le input ne va poster que le numéro de la réponse et pas le numéro de la question.
Je pensais m'orienter vers ceci pour chacune des réponses possible :
- <?php
- if (isset($_POST['quest1']))
- {
- if ($_POST['quest1'] == "rep1")
- {
- // la réponse est juste
- }
- else
- {
- // la réponse est fausse
- }
- }
- ?>
Ma question est :
Comment savoir qu'il s'agit de la question 1 et donc pouvoir mettre le bon $_POST['quest??']
J'espère avoir était précis dans mes explications.
Merci d'avance si quelqu'un pouvait me sortir de cette galère :( .
Salut,
utilise un tableau pour les attribut name de tes réponses :
<li><input type="radio" name="quest[id_question]" value="rep1" />valeur réponse</li>
ensuite tu parcours le résultat avec un foreach :
foreach($_POST['quest'] as $idQest => $valueReponse){
// traitement
}
utilise un tableau pour les attribut name de tes réponses :
<li><input type="radio" name="quest[id_question]" value="rep1" />valeur réponse</li>
ensuite tu parcours le résultat avec un foreach :
foreach($_POST['quest'] as $idQest => $valueReponse){
// traitement
}
Arff je ne connais pas cette fonction, et j'viens de regarder le manuel qui ne m'a pas trop avancé.
Tu aurais un exemple de ce que réalise cette fonction ?
Que j'observe à quoi elle sert et comment m'en servir ?
Tu aurais un exemple de ce que réalise cette fonction ?
Que j'observe à quoi elle sert et comment m'en servir ?
L'exemple de mojorisin ne comporte aucune fonction. que ne comprends-tu pas ?
C'est le foreach que je ne comprend pas du tout.
Je ne vois pas ce qu'il fais et comment il fonctionne, même en regardant le manuel PHP.
Je ne vois pas ce qu'il fais et comment il fonctionne, même en regardant le manuel PHP.
salut,
foreach va traiter tous tes $_POST un par un. Et comme dans le $_POST tu as le name + le value, te suffit de faire une requete SQL qui verifie si le name et la value concordent. Si non, reponse fausse. Le soucis que je vois c'est que avec l'exemple de mojorsin tu ne peux pas prendre en compte tous les $_POST...
Est-ce possible de mettre:
foreach va traiter tous tes $_POST un par un. Et comme dans le $_POST tu as le name + le value, te suffit de faire une requete SQL qui verifie si le name et la value concordent. Si non, reponse fausse. Le soucis que je vois c'est que avec l'exemple de mojorsin tu ne peux pas prendre en compte tous les $_POST...
Est-ce possible de mettre:
- <?php
- //Mettre juste $_POST, car $_POST est un tableau a lui seul... ?
- foreach($_POST as $idQuestion){
- //traitement
- }
- ?>
Accès rapide :
Remonter 

