Bonjour tout le monde !
Je suis étudiant en informatique et depuis un certains j'apprend le PHP.
Après mainte et mainte recherche sur le web, j'ai decidé de venir a vous en esperant trouver de aide ici.
Avant de vous dire mon problème, je vous explice ce que je suis en train de faire.
Alors, je suis en train de codé un QCM à choix multiple où les questions et réponses viennent d'une base de donnée SQL que j'ai initialisé manuelement en amont. Cesquestions et réponses sont affiché sur une page (sessionUser.php). Il y aura qu'une seul question "par page" (meme si je vais éssayer de les mettre sur une seul page mais les afficher une après l'autre apres chaque valida :
L'affichage des questions sur la page :
Alors le problème que j'ai est que je sais pas comment gérer les variables que je récupère pour pouvoir attribuer des notes (+10 la question sachant d'il y aura un dizaine)
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
37
38
39
40
41
42
43
44 <?php // Connexion à la base de données try { $bdd = new PDO('mysql:host=localhost;dbname=projet_avenirfr;charset=utf8', 'root', 'root'); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $req = $bdd->query('SELECT * FROM questions WHERE id = 8'); // requette pour afficher une question (teste) $donnees = $req->fetch(); // execution de la requette et récupération des données ?> <form action='QCM_Trait.php' method='POST'> <div class='formulaires01'> <p><em>Q. : </em><?php echo $donnees['question'];?> </p> <!-- Affichage d'une question (teste) --> <?php $req->closeCursor(); // Important : on libère le curseur pour la prochaine requête $req = $bdd->query('SELECT * FROM reponses WHERE id_question =(select id from questions where id= 8)'); // requette pour afficher la réponse assosié a sa question. Avec une cle étrangère permetant d'aller chercher l'id sur la table question while ($donnees = $req->fetch()) // boucle permetant d'afficher les reponses { ?> <div class='QuesCheck'> <!-- Dans ce checkbox j'affiche la reponse, dans le name j'ai mis les [] pour pouvoir récuperer les checkbox qui ont été coché et ensuite les traiter sur ma page de traitement et en value je met un booléen qui vient du champ qui se nomme validé dans la table des réponses (1 pour les bonnes réponses et 0 pour les mauvaises)--> <input type='checkbox' id='questionQCM01' name='question[]' value='<?php echo $donnees['valide'];?>'> <label for='questionQCM'><?php echo $donnees['reponse'];?></label> </div> <?php } $req->closeCursor(); ?> <div> <button class='valid' type='submit'>Valider</button> <!-- Bouton d'envoie du formulaire --> </div> </div> </form>
J'ai bidouillé quelque petit truck sur ma page de traitement mais rien ne fonctionne correctement.
Le voici :
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136 <?php try { $bdd = new PDO('mysql:host=localhost;dbname=projet_avenirfr;charset=utf8', 'root', 'root'); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $req = $bdd->query('SELECT * FROM reponses WHERE id_question =(select id from questions where id= 8)'); $donnees = $req->fetch(); $note = 0; /* if (isset($_POST) && !empty($_POST)) { */ if (isset($_POST['question']) && !empty($_POST))// récuperation du name plus son id approprier { /* $reponse = $_GET['idReponses']; echo "La reponse est : ". $reponse; // s'ils sont pareil et si leur contenue sont = 1, echo bonne rep */ /* print_r($_POST['question']); echo "<br>". $_POST['question'][0]. " Eeeeeet ". $_POST['question'][1]. " Eeeeeet encore ". $_POST['question'][2]. "<br>"; // cette echo m'a servi pour voir si je pouvais afficher les valeurs inividuelement */ if (isset($_POST['question'][0])) { switch ($_POST['question'][0]) { case 0: $valeur1 = 0; break; case 1: $valeur1 = 1; break; /* default: # code... break; */ } } elseif (isset($_POST['question'][1])) { switch ($_POST['question'][1]) { case 0: $valeur2 = 0; break; case 1: $valeur2 = 1; break; /* default: # code... break; */ } } elseif (isset($_POST['question'][2])) { switch ($_POST['question'][2]) { case 0: $valeur3 = 0; break; case 1: $valeur3 = 1; break; /* default: # code... break; */ } } elseif (isset($_POST['question'][3])) { switch ($_POST['question'][3]) { case 0: $valeur4 = 0; break; case 1: $valeur4 = 1; break; /* default: # code... break; */ } echo "<br>". $valeur1. "<br>"; echo "<br>". $valeur2. "<br>"; echo "<br>". $valeur3. "<br>"; echo "<br>". $valeur4. "<br>"; } /* foreach ($_POST['question'] as $key => $value) { // le foreach permet de lire les lignes du tableau dans lequel se trouve les valeurs des select coché par l'utilisateur après envoie du formulaire echo "La valeur : <em>". $value ."</em> a été coché<br>"; switch ($_POST['question']) { case $value[0]: $valeur1 = $value[0]; echo "<br>". $valeur1. "<br>"; break; case $value[1]: $valeur2 = $value[1]; echo "<br>". $valeur2. "<br>"; break; case $value[2]: $valeur3 = $value[2]; echo "<br>". $valeur3. "<br>"; break; case $value[3]: $valeur4 = $value[3]; echo "<br>". $valeur4. "<br>"; break; default: echo "erreur, aucun variable n'été envoyer"; break; } } */ if ($value == "1") { echo ('bonne rep'); $note += 10; echo "<br>". $note; } /* if ($reponse == 1) { echo ('bonne rep'); $note += 10; echo "<br>". $note; } */ }else { echo ('mv rep'); echo "<br>". $note; } /* } */ ?>
Je vous prie de m'accorder un peut de votre temps pour pouvoir régler ce problème (le plus rapidement possible car j'ai jusqu'à jeudi pour le fini avec un espace admin).
Merci d'avance
Bien cordialement![]()
Partager