vanquish Posté 12 Mars 2005 Posté 12 Mars 2005 Bonjour, Je galère complètement avec MySQL que je ne connais presque pas. Je cherche à générer un menu de ce style : <p>Rubrique 1</p><ul><li>Article 1</li><li>Article 2</li><li>Article 3</li></ul><p>Rubrique 2</p><ul><li>Article 1</li><li>Article 2</li><li>Article 3</li></ul> J'ai deux bases : - une base 'rubrique' avec comme champs : id et nom - une base 'articles' avec comme champs : id, idrubrique, nom, contenu Et je voudrais donc lister chaque catégorie avec chaque article qui est dedans mais je n'y arrive pas :S Pouvez vous m'aider svp ? Comment faire ? Merci beaucoup !
Sarc Posté 12 Mars 2005 Posté 12 Mars 2005 Salut.. J'avais tapé un long message, mais ma méthode me satisfaisait pas :/ ! Elle avait le mérite de n'avoir qu'une requête, mais le bidouillage PHP était embêtant lol... Bon, la méthode la plus simple : $req1 = "SELECT id, nom FROM rubrique";$resultat1 = mysql_query($req1);while($donnees = mysql_fetch_array($resultat1){extract($donnees);echo "<p>$id. $nom</p><ul>";$req 2 = "SELECT id, nom FROM articles WHERE idrubrique='$id'";$resultat2 = mysql_query($req2);while($donnees2 = mysql_fetch_array($resultat2){extract($donnees2);echo "<li>$nom</li>";}echo "</ul>";} Le problème de ça, c'est qu'il y a plusieurs requêtes SQL... :/ Possibilité d'améliorer, mais bon c'est le moins trafiqué à mon goût
vanquish Posté 12 Mars 2005 Auteur Posté 12 Mars 2005 Salut ! Merci bcp mais créer une requete par rubrique ce n'est pas un peu génant ? Ca va me bouffer pas mal de ressources non ?
Sarc Posté 12 Mars 2005 Posté 12 Mars 2005 Tu as bcp de rubriques ? L'autre méthode c'est de tout prendre en un seul coup, et de faire des tableaux... $req="SELECT a.id, a.nom, a.contenu, b.id AS idrub, b.nom AS nomrub FROM articles a, rubrique b WHERE a.idrubrique=b.id";$resultat1 = mysql_query($req1);while($donnees = mysql_fetch_array($resultat1){extract($ligne);$liste[$idrub][$id]=$nom;$liste[$idrub]=$nomrub;}foreach($liste AS $idrub){echo "<p>$nom</p><ul>";foreach($idrub AS $idart=>$nom){echo "<li>$nom</li>";}echo "</ul>} J'ai fait ça sans tester, donc je ne garantis pas que ça marche bien, surtout que les imbrications de tableaux et de foreach sont pas faciles à réussir du premier coup ! Mais tu n'as plus qu'une seule requête en tout cas
vanquish Posté 12 Mars 2005 Auteur Posté 12 Mars 2005 Merci beaucoup c'est très sympa. je vais tester tout ça... et p-e passer à un CMS ! Quand on ne connait pas mieux vaut utiliser un bon outil que de tout mal faire.
Portekoi Posté 12 Mars 2005 Posté 12 Mars 2005 Bonjour, Pour la requête, il vaut mieux utiliser les jointures internes/externes afin que les requêtes soient optimiser du genre : SELECT a.id, a.nom, a.contenu, b.id AS idrub, b.nom AS nomrub FROM a inner join b on a.id = b.id _rub En a, on a une colonne 'id' pour le numéro du menu En b, on a une clé étrangère 'id_rub' correspondant au numéro du menu. Bonne soirée Portekoi
vanquish Posté 12 Mars 2005 Auteur Posté 12 Mars 2005 Merci mais on m'a donné une solution qui fonctionne d'enfer ! Merci encore à tous.
Portekoi Posté 12 Mars 2005 Posté 12 Mars 2005 Peux tu la donné pour ceux qui recherche la même chose que toi?
vanquish Posté 13 Mars 2005 Auteur Posté 13 Mars 2005 Je suis revenu sur ce post pour ça Tada ! http://forum.2037.org/viewtopic.php?t=91642&highlight= Merci !
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant