Affichage de liens classés par catégorie

Répondre
freedom
le 12/02/2007 à 20:31
freedom
Salut tout le monde,
je voudrais afficher des liens sur une page, mais classés par catégorie.J'ai créé 2 tables: lien et catégorie_lien avec une jointure.Mais comment faire une boucle pour afficher d'abord la catégorie puis tous les liens qui correspondent, ensuite l'autre catégorie et ses liens etc...
Concretement je veux afficher:

catégorie: Jeunes:
lien 1
lien 2 ....

catégorie: Infos:
lien 1
lien 2 .....
Sammuel
le 12/02/2007 à 20:39
Sammuel
Je pense qu'il faut que tu face 2 requetes.

// 1ere requete
$req1 = mysql_query("SELECT idcategorie,nom FROM CATEGORIE");

while($categorie = mysql_fetch_assoc($req)){

AFFICHAGES DES CATEGORIES

// 2eme requete
$req2 = mysql_query("SELECT nom FROM lien WHERE idcategorie = '".$categorie["idcategorie"]."'");

while($lien = mysql_fetch_assoc($req2)){

AFFICHAGE DES LIENS

} // fin boucle 2eme requete
} // fin boucle 1ere requete


C'est comme ca que je ferais ! Mais je ne suis pas un pro en PHP, peut etre y a t'il une meilleure solution !
freedom
le 12/02/2007 à 20:57
freedom
Nuff respect.
pourquoi cherche compliqué quand on peut faire simple.Ca marche impec. Merci very much :D :D
Reste dans les parages j'aurais surement besoin de toi after mdr
LA GLOBULE
le 12/02/2007 à 21:51
LA GLOBULE
C'est pas parce que ca marche que c'est bien.

Si tu as 10 catégories qui ont x sous catégories chacune, tu vas faire 11 requetes SQL sur une seule page alors que tout peut se faire en une seule requete SQL.

<?php
$sql = "SELECT categorie.idcategorie, categorie.nom, lien.lien FROM categorie, lien WHERE lien.idcategorie = categorie.idcategorie ORDER BY categorie.idcategorie ASC, lien.idcategorie ASC";
$req = mysql_query($sql) or die ($sql.' '.mysql_error());

$temp = '';

while ($data = mysql_fetch_array($req)) {
if ($temp != $data['idcategorie']) {
echo 'Catégorie : '.$data['nom'].'';
$temp = $data['idcategorie'];
}
echo 'Lien : '.$data['lien'].'';
}
mysql_free_result($req);
?>
Sammuel
le 13/02/2007 à 12:10
Sammuel
Merci LA GLOBULE pour ta réponse !
Je savais bien qu'il y avait une meilleure solution :D
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours