Bonjour,
Me revoilà avec un problème d'affichage.
Je précise qu'au niveau des insertions, les données s'insèrent avec les bons identifiants.
J'ai 4 tables : cours, chapitres, reponses, questions et une table relationnelle qui permet de faire les relations entre les 4 tables.
Sur la page d'affichage, toutes les données s'affichent mais je rencontre un problème pour l'affichage des questions/exercices. Les questions/exercices dépendent des chapitres. Les questions/exercice prennent en compte l'identifiant du cours mais pas l'identifiant du chapitre. Je précise qu'il y a une fonction javascript, qui crée un sommaire avec les balises de titres (de <h1> jusqu'à <h7>) avec une numérotation automatique.
J'ai essayé plusieurs fois, j'ai obtenu des résultats différents (affichage du bloc : "Exercices" dans chaque chapitre, etc…).
Voici mon raisonnement :
Pour chaque chapitre trouvé, tu vas voir dans la table des questions s'il y en a avec l'identifiant du chapitre : si oui, tu affiches le bloc : "Exercice" sinon tu passes au prochain chapitre (ainsi de suite pour chaque chapitre trouvé).
Voici les requêtes SQL :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 // Sélectionnement de l'identifiant de l'élève connecté $selection_identifiant_id_eleve_connecte = mysql_query("SELECT id_utilisateur FROM test_site_utilisateur WHERE id_utilisateur=".$_SESSION['id_utilisateur']." AND (acces_utilisateur='1' OR acces_utilisateur='5')") or die ('Erreur lors de la requête SQL qui permet de sélectionner l\'élève connecté.'); // Sélectionnement du bon Cours/TP $selection_cours_tp = mysql_query("SELECT DISTINCT(t4.titre_chapitre),t2.titre_cours,t2.introduction_cours,t2.conclusion_cours,t2.date_publication_cours,t2.matiere_cours,t2.classe_cours,t4.contenu_chapitre, t2.id_cours FROM test_site_relation_cours_tp_utilisateur_v2 t1,test_site_cours_v2 t2,test_site_utilisateur t3,test_site_chapitres_v2 t4 WHERE t3.id_utilisateur=".$_SESSION['id_utilisateur']." AND t1.id_chapitre=t4.id_chapitre AND t1.id_cours=t2.id_cours AND (acces_utilisateur='1' OR acces_utilisateur='5') AND t2.id_cours='$id_cours_tp' AND t4.id_cours='$id_cours_tp'") or die("Erreur sur la requête SQL qui sélectionne toutes les informations du Cours/TP (sauf les questions et les réponses)."); // Récupération des questions du Cours/TP dans la base de données - Deuxième version $query_selection_questions_cours_tp=mysql_query("SELECT DISTINCT(contenu_question) FROM test_site_questions_v2 t1, test_site_cours_v2 t2 WHERE t1.id_cours=t2.id_cours AND t2.id_cours='$id_cours_tp'") or die('Erreur lors de la sélection des questions d\'un Cours/TP'.mysql_error());
Voici la partie du code actuel (où toutes les questions se mettent sous le premier chapitre alors qu'il y en a une qui doit se mettre sous le second chapitre) :
Code php : 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 $id_cours_tp = intval($_POST['id_cours_tp']); <?php if(mysql_num_rows($selection_identifiant_id_eleve_connecte)==1) { if(mysql_num_rows($query_selection_titre_cours_tp)==1) { echo "<header>".$_SESSION['titre_cours']."</header>"; } echo '<div id="sommaire"></div>'; if(mysql_num_rows($selection_cours_tp)>=1) { $classe_matiere=mysql_fetch_assoc($selection_classe_matiere); echo '<span class="informations_importantes">Classe : </span>'.html_entity_decode(stripslashes($classe_matiere['classe_cours']))."<br />"; echo '<span class="informations_importantes">Matière : </span>'.html_entity_decode(stripslashes($classe_matiere['matiere_cours'])); while ($donnees_cours_tp_eleve = mysql_fetch_assoc($selection_cours_tp)) { echo html_entity_decode(stripslashes($donnees_cours_tp_eleve['date_depot_cours'])); echo html_entity_decode(stripslashes($donnees_cours_tp_eleve['introduction_cours'])); echo "<h1>".html_entity_decode(stripslashes($donnees_cours_tp_eleve['titre_chapitre']))."</h1>"; echo html_entity_decode(stripslashes($donnees_cours_tp_eleve['contenu_chapitre'])); // Récupération du nombre d'enregistrements des questions du Cours/TP dans la base de données pour faire qu'un bloc "Exercices" s'il y a plusieurs questions (à voir avec une question par chapitre) - Deuxième version - Il faut améliorer pour que les questions s'affichent par rapport aux chapitres (au bon endroit) $nombre_de_questions = mysql_num_rows($query_selection_questions_cours_tp); // Boucle qui permet d'afficher la question et la zone de texte correspondante - DEBUT for ($i = 0; $i < $nombre_de_questions; $i++) { $donnees_exercice_question_cours_tp_eleve = mysql_fetch_assoc($query_selection_questions_cours_tp); if(mysql_num_rows($query_selection_questions_cours_tp)>=1) { echo '<div class="exercice">'.html_entity_decode(stripslashes($donnees_exercice_question_cours_tp_eleve['contenu_question'])).'<a name="question'.($i+1).'"></a><div class="reponse_cours_tp">Votre réponse <b>n°'.($i+1).'</b> <div style="position:relative; top:1.5em;left:0em;float:left;" id="image'.($i+1).'"></div>:<br /><textarea onkeyup="dynamicHeight(this);" rows="1" style="height: 40px;" cols="80" name="reponse'.($i+1).'" onChange="go('.($i+1).', this.value);"></textarea></div></div>'; } // Boucle qui permet d'afficher la question et la zone de texte correspondante - FIN } echo html_entity_decode($donnees_cours_tp_eleve['conclusion_cours']); } } } ?>
Ma question est : Comment afficher les questions et les zones de texte correspondantes (du bon cours) au bon endroit par rapport aux chapitres ? S'il n'y a pas de question, ce n'est pas la peine d'afficher le bloc : "Exercice". Actuellement, toutes les questions s'affichent sous le premier chapitre et ne prennent pas en compte le champs id_chapitre de la table des questions. De plus, le bloc "Exercice" s'affiche même quand il n'y a pas de question.
Je viens vers vous en ayant réfléchi, je ne viens pas en "touriste" !
Cordialement
Partager