Bloqué sur la création d'un QCM depuis des semaines

Répondre
surfeurdu33
le 18/10/2007 à 17:08
surfeurdu33
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 :

<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 :( .
mojorisin
le 18/10/2007 à 18:59
mojorisin
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
}
echo ’16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq’|dc
surfeurdu33
le 19/10/2007 à 07:10
surfeurdu33
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 ?
LupusMic
le 19/10/2007 à 07:27
LupusMic
L'exemple de mojorisin ne comporte aucune fonction. que ne comprends-tu pas ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
surfeurdu33
le 20/10/2007 à 07:28
surfeurdu33
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.
Keika
le 20/10/2007 à 08:29
Keika
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:
<?php
//Mettre juste $_POST, car $_POST est un tableau a lui seul... ?
foreach($_POST as $idQuestion){

//traitement

}
?>
Le PHP --> C'est dur !
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours