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