Affichage jointure

Eléphant du PHP | 287 Messages

12 nov. 2008, 19:02

Je vais essayé d'être clair:
2 tables :
1 pays (id, pays)
1 photo (id_photo, id_pays,image,titre_image)

J'ai fait une jointure pour afficher les pays qui ont des photos

requete PHP
$pays = mysql_query("SELECT DISTINCT pays FROM photo LEFT JOIN pays ON photo.id_pays = pays.id") or die(mysql_error());

/*Avec cette boucle, on liste*/
while ($affichage = mysql_fetch_array($pays) ) 
{ 
echo '<a href="aff_photo_pays_2.php?pays='.$affichage['pays'].'">'.$affichage['pays'].'</a>'; 
}
echo "<br />";
echo '<a href="javascript:history.go(-1)">[ Retour ]</a>';
Jusque là pas de problème ça m'affiche bien uniquement les pays qui ont des photos.
Après ça se complique puisque je veux afficher les photos par pays. Si je sélectionne France je dois avoir que les photos de France. Mon problème c'est que j'ai toujours toutes les photos de tous les pays qui s'affichent !
Dans ma requéte j'essaie de recupérer le nom du pays dabord c'est pourquoi j'ai fait ça:
$image = mysql_query("SELECT DISTINCT image,titre_image FROM photo AND pays=".$_GET["pays"]." LEFT JOIN pays ON photo.id_pays = pays.id") or die(mysql_error());


while ($affichage = mysql_fetch_array($image) ) 
{ 
echo '<img src="upload/'.$affichage['image'].'" width="220" height="165">'; 
echo "<br />";
echo $affichage['titre_image']; 
echo "</p>"; 
} 
echo "<br />";
echo '<a href="javascript:history.go(-1)">[ Retour ]</a>';
}
Et voilà le message d'erreur que j'ai
Merci de votre aide
Ca fait des jours que je coince, oui des jours...

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

12 nov. 2008, 19:57

Modération :
Romuald632, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 nov. 2008, 21:46

T'es presque bon, va juste falloir revoir la façon dont tu construits ta requête, car tu t'emmeles un peu les pinceaux.
Ce qui est bien avec le SQL c'est qu'on l'écrit comme on le parle, encore faut il le parler dans le bon ordre ;)

Code : Tout sélectionner

SELECTIONNE les données dont j'ai besoin DEPUIS les tables où elles se trouvent AVEC les conditions désirées
Si on remet ta requête dans l'ordre ça donne :

Code : Tout sélectionner

SELECT DISTINCT image, titre_image FROM photo LEFT JOIN pays ON photo.id_pays = pays.id WHERE pays = ".$_GET["pays"];
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 287 Messages

13 nov. 2008, 10:33

Bonjour,
Voila ma requete SQL et ça fonctionne :
$image = mysql_query('SELECT DISTINCT photo.image as image, photo.titre_image as titre_image, pays.pays as pays FROM photo LEFT JOIN pays ON photo.id_pays = pays.id WHERE pays.pays="'.$_GET['pays'].'"')or die(mysql_error());
Merci à tous