Page 1 sur 1

requete multitables?

Posté : 26 mai 2005, 10:48
par singer
bonjour à tous

j'ai une base de données avec deux tables : album et groupe

je fais cette requete :
<?php 
$sql = 'SELECT * FROM album WHERE idgroupe LIKE  '.$idgroupe.'';
$req = mysql_query($sql) or die('Error!');
while ($data = mysql_fetch_array($req))

{echo "<tr><td class=\"album\">" . $data['nom_album'] . "</td>" .
     "<td class=\"annee\">" . $data['annee'] . "</td>" .   
     "</tr>";}

mysql_close();
?>
pour afficher la liste des albums d'un groupe

j'aimerai afficher la photo correspondant à chaque album et je ne sais pas comment faire.

les images des albums sont stockées dans un dossier "albums" et ont pour nom le idalbum de la table album.

Posté : 26 mai 2005, 10:54
par ZeRo[^L^]CoOOL
la structure de votre 2 Tables SVP

Posté : 26 mai 2005, 10:55
par flitox
Il te suffit d'interroger la bdd en précisant la table et le champ :

Code : Tout sélectionner

SELECT * FROM table.champ

Posté : 26 mai 2005, 11:02
par singer
voici la structure de mes tables

table album

idalbum
nom
annee
idgroupe


table groupe

idgroupe
nom
site
bio

flitox tu peux preciser stp ?

merci de votre aide

Posté : 26 mai 2005, 11:08
par flitox
Pour pouvoir lire des champs sur 2 tables dans la même requête, tu dois définir à quelle table appartiennent les différents champs :

En gros ça donnerait ça :

Code : Tout sélectionner

$sql = 'SELECT * FROM album, groupe WHERE groupe.idgroupe LIKE '.$idgroupe.'';

Posté : 26 mai 2005, 11:15
par singer
merci beaucoup à vous deux :)

bonne journée

Posté : 26 mai 2005, 11:17
par ZeRo[^L^]CoOOL
Bon votre poste est un peux floue mais bon j'éssaye de faire comme j'ai compris.
Si tu veut afficher la liste des groupes avec leurs album et pour chaque album sa photo:
<table>
<?
//liste des groupes
$groups=mysql_query("SELECT * FROM groupe");
   while($groups_tab=mysql_fetch_array($groups))
   {
     echo "<tr> <td> Nom de la Groupe: ".$groups_tab["nom"]."</td><td><table width=100%>";
           //liste des albums relative a chaque Groupe
    $albums=mysql_query("SELECT * FROM album WHERE $idgroupe=".$groups_tab["idgroupe"];
     while($albums_tab=mysql_fetch_array($albums))
      {
        //ici j'ai suposé que tous les fichiers on l'extension jpg
     echo "<tr> <td> <img src='albums/".$albums_tab["idalbum"].".jpg'>
         Nom de l'Album:".$albums_tab["nom"]."</td></tr>";
      }
      echo "</table></td></tr>";
    }
?>
</table>
il va vous afficher tous les groups et pour chaque Groupe la liste des albums relative a ce dernier avec leurs images.
Bonne chance :)

Posté : 26 mai 2005, 11:19
par singer
argg, quand j'utilise cette requete, tous les albums (de tous les groupes ) s'affichent pour la fiche de chacun des groupes

Posté : 26 mai 2005, 11:24
par Cyrano
Il y a plusieurs erreurs dans le code montré:
<table>
<?
//liste des groupes
$groups = mysql_query("SELECT * FROM groupe");
while($groups_tab = mysql_fetch_array($groups))
{
    echo "<tr> <td> Nom de la Groupe: ".$groups_tab["nom"]."</td><td><table width=100%>";
    //liste des albums relative a chaque Groupe
    $albums=mysql_query("SELECT * FROM album WHERE idgroupe = ". $groups_tab['idgroupe']);
    while($albums_tab = mysql_fetch_array($albums))
    {
        //ici j'ai suposé que tous les fichiers on l'extension jpg
        echo "<tr> <td> <img src=\"albums/".$albums_tab['idalbum'].".jpg\">Nom de l'Album:".$albums_tab["nom"]."</td></tr>";
    }
    echo "</table></td></tr>";
}
?>
</table>

Posté : 26 mai 2005, 11:30
par Invité
merci cyrano et ZeRo[^L^]CoOOL ça fonctionne.

pour la requete de flitox, au lieu de tenir compte de l'idgroupe et d'afficher les albums concernant un seul groupe, j'ai tous les albums. y a t il une erreur dans la requete?

ex pour le groupe xxx j'ai les albums de xxx + les albums de yyy

Posté : 26 mai 2005, 11:41
par Cyrano
Non, il n'y a pas d'erreur, mais pour un seul groupe, rajoute une clause WHERE dans la première requête, du genre

Code : Tout sélectionner

...WHERE `idgroupe` = ". $idgroupe .";