Bonjour
j'ai 4 tables dans ma base que je souhaite lier
une table livre qui peut être lier soit à une table auteur, artiste ou auteur_pref
la table livre contient
id_livre
art_id (pour faire le lien avec la table artistes)
preface_id (pour faire le lien avec la table auteur_pref)
aut_id (pour faire le lien avec la table auteurs
l'identifiant de la table auteurs est id_aut
l'identifiant de la table artistes est id_art
l'identifiant de la table auteur_pref est id_pref
Pour chaque livre de ma table "livre" je souhaite afficher soit l'auteur, soit l"auteur de la préface, soit l'artiste, soit seulement 2 de ces données, soit les 3.
Ma requête est la suivante :
SELECT * FROM livre, artistes, auteurs, auteur_pref WHERE art_id=id_art XOR preface_id=.id_pref XOR aut_id=id_aut
Dans Mysql cette requête affiche bien les lignes que je souhaite afficher.
pour les afficher dans mon fichier php je fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 $query_auteur = "SELECT * FROM livre, artistes, auteurs, auteur_pref WHERE livre.art_id=artistes.id_art XOR livre.preface_id=auteur_pref.id_pref XOR livre.aut_id=auteurs.id_aut"; $auteur = mysql_query($query_auteur, $dbprotect) or die(mysql_error()); $row_auteur = mysql_fetch_assoc($auteur); do { <i>Auteur</i> :<a href="fiche_auteur.php?fiche_aut=<?php echo $row_auteur['id_aut']; ?>"> <?php echo $row_auteur['nom']; ?> </a> <br/> <i>Préface</i> : <?php echo $row_auteur['nom_pref']; ?> <br/> <i>artiste</i> : <?php echo $row_auteur['nom_art']; ?> <br/> } while ($row_auteur = mysql_fetch_assoc($auteur)); $rows = mysql_num_rows($auteur); if($rows > 0) { mysql_data_seek($auteur, 0); $row_auteur = mysql_fetch_assoc($auteur); }
Mais ne fonctionne pas vraiment... par exemple si le premier livre de ma table ne comporte qu'un auteur et pas d'artiste ni d'auteur de préface, j'ai tout de même les trois ligne afficher avec les donnés des autres livres.
Quelqu'un voit il d'où peut venir le problème?
Merci pour votre aide
Partager