Affichage jointure

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Affichage jointure

par Romuald632 » 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

par Ryle » 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"];

par albat » 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

Affichage jointure

par Romuald632 » 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...