Aller au contenu

Problème de requéte croisée


flo001

Sujets conseillés

Salut à tous!

Voici mon problème, 3 tables:

- "vidéo" avec |id_video|nom_video|

- "catégorie" |id_categorie|nom_categorie|

- "lien_categorie" |id_video|id_categorie|

un vidéo peut appartenir a plusieurs catégories, comment en une requéte pouvoir afficher une liste comme celle la:

vidéo1 : cat1, cat5, cat10

video2 : cat3, cat4

video3 : cat2, cat8

....

Je vous remercie.

Florent

Lien vers le commentaire
Partager sur d’autres sites

Bonjour !

Je vais tenter de le faire sans échauffement, donc excuse-moi si je fais une erreur bête et méchante...

En fait, ce que je fais dans ce cas-là, c'est un truc du genre :

SELECT id_cat b, nom_cat b, id_vid a FROM categories b, videos a, liens c WHERE c.id_vid=a.id_vid AND c.id_cat=b.id_cat ORDER BY a.id_vid

Ensuite, en PHP, tu peux traiter les données :

while($donnees=mysql_fetch_array(mysql_query($rq)))
{
extract($donnees);
$tableau_traites[$id_vid][] = $nom_cat;
}

Puis enfin, pour afficher les données

foreach($tableau_traites AS $clef=>$tableau_cat)
{
echo "vidéo $clef : ".explode(', ', $tableau_cat);

}

Voilà, ça devrait pouvoir ressembler à ça. :)

Lien vers le commentaire
Partager sur d’autres sites

J'ai oublié les sous-titres en Français...

J'espère que tu lis à peu près le SQL, déjà. La requête va juste chercher les vidéos et les catégories qui correspondent.

En gros ça va renvoyer :

vidéo1 catégorie1

vidéo1 catégorie5

vidéo1 catégorie10

vidéo2 catégorie3

etc...

Le premier code PHP va juste ranger dans un tableau les catégories associées au vidéo.

A la fin, tu auras un tableau qui a cette gueule :

tableau[vidéo1][0] = nom_categorie1

tableau[vidéo1][1] = nom_categorie5

tableau[vidéo1][2] = nom_categorie10

tableau[vidéo2][0] = nom_categorie3

etc...

Le deuxième code PHP va parcourir le tableau par rapport à la première dimension.

Donc en rentrant dans le foreach, il va avoir $clef qui sera vidéo1, et $tableau_cat qui sera le tableau :

$tableau_cat[0] = nom_categorie1

$tableau_cat[1] = nom_categorie5

$tableau_cat[2] = nom_categorie10

Faire un écho de la clef te permet d'afficher le numéro de la vidéo. Et l'implode sur le tableau permet de t'afficher tous les éléments du tableau, à la suite, séparés par une virgule... :)

Voili voilou !

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...