[php/mysql] requêtes multi-tables

LeGhe -  
gaerebut Messages postés 1060 Statut Membre -
Bonjour,

Je suis débutant en php, et essaie de créer un site pour une librairie.
J'exporte mon catalogue dans une BDD mysql, que je travaille sous wordpress.

Ma question :
Ma BDD contient une table principale "book", avec un champ (entre autres) "Country", encodé en "chiffre"
Ce "chiffre" est décodé dans une autre table appelée "country"

Exemple table "book":
ID Title NrofPages Country
32695 Fragments tunisiens 176 16872

Exemple table "country"
ID Name
16872 Tunisie

Evidemment, quand je fais :

$reponse = mysql_query("SELECT * FROM book") or die(mysql_error());
while ($donnees = mysql_fetch_array($reponse) )
<strong>Pays</strong> : <?php echo $donnees['Country']; ?>

me donne en affichage : "16872"...

Comment interroger la 2ème table pour décoder cela en "Tunisie" ?

Merci de votre aide
A voir également:

9 réponses

gaerebut Messages postés 1060 Statut Membre 171
 
Salut,

$reponse = mysql_query("SELECT c.Name as 'name' FROM country c, book b, WHERE b.Country = c.ID") or die(mysql_error());
while ($donnees = mysql_fetch_array($reponse) )
<strong>Pays</strong> : <?php echo $donnees['name']; ?> 


Dis moi si ça marche. J'utilise là une jointure pour mettre en relation les 2 tables.
Essaye de la comprendre c'est pas bien dur !

Tiens moi au courant ..

A+

Gaerebut
0
LeGhe
 
Merci de ta réponse.
J'ai l'erreur suivante :

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE b.Country = c.ID' at line 1
0
LeGhe
 
Mon code:

$reponse = mysql_query("SELECT * FROM book") or die(mysql_error());
while ($donnees = mysql_fetch_array($reponse) )
$nom = mysql_query("SELECT c.Name as 'Name' FROM country c, book b, WHERE b.Country = c.ID") or die(mysql_error());
while ($pays = mysql_fetch_array($nom) )

{
?>
<strong><FONT SIZE=3><?php echo $donnees['Title']; ?></font></strong>
<em><strong><font size=2><?php echo $donnees['SubTitle']; ?><br /></font></strong></em>
<strong>Pays</strong> : <?php echo $pays['nom']; ?><br />
<strong>Prix</strong> : <?php echo $donnees['Prix']; ?> euros<br />
<strong>Nombre de pages</strong> : <?php echo $donnees['NrofPages']; ?><br />
<strong>Résumé</strong> : <?php echo $donnees['Plot']; ?> <br />
<center>_____________________________________________</center>

<?php
}

mysql_close(); // Déconnexion de MySQL
?>
0
gaerebut Messages postés 1060 Statut Membre 171
 
Vérifie bien que la table book contient le champ "Country" et que la table country contient le champ 'ID'.
Quand je dis de bien vérifier, c'est au niveau de la casse (majuscule/minuscule)
Il y a forcément une différence. Change ta requête en fonctions des champs de ta table et ça marchera.

Sinon ... lol
Inverse la condition n_n'

b.Country = c.ID deviendra c.ID = b.Country

A+

Gaerebut
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LeGhe
 
C'est vérifié : book/Country contient xxx
et country contient ID(=xxx) et Name

et inverser
b.Country = c.ID et c.ID = b.Country

ne change pas l'erreur...
Merci de ton aide!
0
LeGhe
 
up...
0
LeGhe
 
up
0
leghe
 
Help svp...
Je ne m'en sors pas...
0
gaerebut Messages postés 1060 Statut Membre 171
 
Salut,

essaye par toi même de trouver si ma méthode ne marche pas !
Perso, elle doit marcher, la solution est pas loin, il doit juste y avoir un petit quelque chose qui fait tout foirer !

Tu vois bien que personne ne te répond, essaye de te documenter sur les "Jointures".

A+

Gaerebut
0