Page 1 sur 1

Pas d'idée pour la manière d'éxécuter un script

Posté : 06 sept. 2007, 21:37
par Nanocom
Salut, je galère beaucoup pour créer un script qui affiche en une requête les cours de mon site par niveau (Troisième, Seconde, etc) en une requête.

Voici la requête :

Code : Tout sélectionner

SELECT c.id AS id_cours, c.nom, c.description, c.id_niv, c.id_mat, n.id AS id_niveau, n.nom_niv FROM cours c LEFT JOIN niveau n ON c.id_niv = n.id WHERE c.id_mat='.$id_mat.' ORDER BY c.nom
En fait on affiche les cours en fonction de la matière choisie d'où le $id_mat en plein milieu.

Je voudrais afficher la page de la manière suivante :

Code : Tout sélectionner

<!-- BEGIN niveau --> <h2>Le titre du niveau (troisième, seconde etc)</h2> <!-- BEGIN cours --> Le titre du cours, sa description etc <!-- END cours --> <br /> <!-- END niveau -->

Il faudrait faire une double boucle mais je vois vraiment pas comment, je suis pas encore assez expérimenté pour ça...

Et pour plus de précisions, je veux en fait afficher le titre de chaque niveau contenant des cours et les cours qui font partie de ce niveau juste en dessous (sans réafficher plusieurs fois le titre du niveau)

Merci pour vos réponses et @ + !

Posté : 06 sept. 2007, 21:47
par Shrell
Piste à explorer : je verrais plutot la requete ordonnée d'abord par niveau PUIS par nom de cours :

Code : Tout sélectionner

SELECT c.id AS id_cours, c.nom, c.description, c.id_niv, c.id_mat, n.id AS id_niveau, n.nom_niv FROM cours c LEFT JOIN niveau n ON c.id_niv = n.id WHERE c.id_mat='.$id_mat.' ORDER BY n.nom_niv, c.nom
d'ailleurs si tu as un ordre dans niveaux, ce serait plutot par ca qu'il faudrait ordonner, mais bon...

Ensuite une boucle simple suffit :
$titreCourant="";
while($r=mysql_fetch_assoc($requete)) {
    if($titreCourant!=$r['nom_niv']) {
        echo "<h2>".$r['nom_niv']."</h2>";
        $titreCourant=$r['nom_niv'];
    }
    //ici l'affichage de chaque cours, je te laisse le soin de t'en occuper ;)
}

Posté : 08 sept. 2007, 16:53
par Nanocom
Je vais voir ce que je peux faire avec ça... Je vous recontacte après ! ;)

Posté : 08 sept. 2007, 16:55
par Nanocom
Ah ouiiii bien vu ! J'ai enfin compris ! Merci beaucoup !