[php/mysql] requêtes multi-tables

Fermé
LeGhe - 28 mai 2009 à 18:09
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 - 3 juin 2009 à 03:14
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 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
28 mai 2009 à 18:17
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
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
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 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
28 mai 2009 à 18:34
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
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
up...
0
up
0
Help svp...
Je ne m'en sors pas...
0
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
3 juin 2009 à 03:14
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