Aller au contenu

Requête(s) MySQL pour créer un menu


vanquish

Sujets conseillés

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 !

Lien vers le commentaire
Partager sur d’autres sites

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 :D

Lien vers le commentaire
Partager sur d’autres sites

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 :D

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...