[php/mysql] requêtes multi-tables
LeGhe
-
gaerebut Messages postés 1060 Statut Membre -
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
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:
- [php/mysql] requêtes multi-tables
- Tables des matières word - Guide
- Easy php - Télécharger - Divers Web & Internet
- Sfr multi - Accueil - Opérateurs & Forfaits
- Youtube multi downloader - Télécharger - Conversion & Codecs
- Mysql community download - Télécharger - Bases de données
9 réponses
Salut,
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
$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
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
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
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
?>
$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
?>
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
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
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!
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!