Page 1 sur 1
Affichage
Posté : 07 nov. 2008, 10:27
par Romuald632
Grâce à vous j'ai avancé ! Hé oui...
Pour récupére mes données dans 2 tables voilà ce que j'ai fait et ça marche :
$pays = mysql_query("SELECT DISTINCT pays FROM photo LEFT JOIN pays ON photo.id_pays = pays.id") or die(mysql_error());
while ($affichage = mysql_fetch_array($pays) )
{
echo '<a href="aff_photo_pays.php?pays='.$affichage['pays'].'">'.$affichage['pays'].'</a>';
}
Maintenant pour afficher mes photos par pays c'est un peu plus compliqué. En effet j'ai une page blanche qui s'affiche, pas de message d'erreur, donc peut-être que la solution n'est pas bien loin :
if(isset($_GET["id_pays"]))
{
$image = mysql_query("SELECT image,titre_image,id_pays FROM photo WHERE id_pays='".$_GET["id_pays"]."'") or die(mysql_error()); //*/WHERE pays=".$_GET["id_pays"]) while ($affichage = mysql_fetch_array($image) )
{
echo '<img src="upload/'.$affichage['image'].'" width="220" height="165">';
echo "<br />";
echo $affichage['titre_image'];
Si vous pouvez me dire où se trouve l'erreur
Merci
Posté : 07 nov. 2008, 10:48
par charabia
mysql_fetch_array manquant dans ton second code. Regarde comment tu as fait pour le premier, fait pareil pour le second.
Posté : 07 nov. 2008, 11:36
par Romuald632
Mon code c'est ça, et j'ai mis mysql_fetch_array :
/*requete mysql*/
if(isset($_GET["id_pays"]))
{
$image = mysql_query("SELECT image,titre_image,id_pays FROM photo WHERE id_pays='".$_GET["id_pays"]."'") 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>";
}
}
else
{
}
Posté : 07 nov. 2008, 11:52
par charabia
Je ne comprend pas pourquoi tu colles un mauvais code au lieu de coller directement le code que tu as fait, on perd quand même du temps tu ne trouves pas ?
Si tu n'as rien, c'est peut-être que ta requête ne donne aucun résultat. Vérifies.
Posté : 07 nov. 2008, 12:09
par Romuald632
J'ai changé mon code !
Maintenant toutes mes photos s'affichent sans faire de distinction par pays
/*requete mysql*/
$image = mysql_query("SELECT `id_pays` , `titre_image` , `image` FROM photo") 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>";
}
Posté : 07 nov. 2008, 12:37
par charabia
Pfiou si tu l'as changé il faut le dire et soulever le nouveau problème ! lol N'attend pas qu'on te le demande quand même.
A quoi correspond ta requête à ton avis ?
Posté : 07 nov. 2008, 12:47
par Romuald632
Là je comprends bien que ma requête va m'afficher toutes les photos
Si je saisis le truc il faut que je récupère dabord les photos qui ont l'id du pays qui m'intéresse
Posté : 07 nov. 2008, 12:50
par charabia
C'est dans cette requête que tu dois faire ta jointure si tu veux relier la table PAYS avec la table PHOTO.
Ensuite tu sélectionnes toutes les images où id_pays de PHOTO = id_pays de PAYS et le tour est joué.
Posté : 07 nov. 2008, 14:43
par Romuald632
Un truc du genre :
$image = mysql_query("SELECT DISTINCT image FROM photo LEFT JOIN pays ON photo.image = pays.id") or die(mysql_error());
Posté : 07 nov. 2008, 14:56
par charabia
Bé tu as dit que la jointure que tu as fait marchait (dans ton premier post)...
photo.image, où est la correspondance avec pays.id ?
Posté : 07 nov. 2008, 16:47
par Romuald632
Ma première jointure fonctionne impécable puisque j'affiche les pays pour lesquels j'ai des photos
J'ai donc fait un lien vers une autre page où j'affiche les photos en fonction du pays...
Mais si je fait une jointure indentique à la première je drirai qu'il est logique que toutes les photos s'affichent et c'est le cas...
Quand je vais sur :
http://localhost/****/aff_photo_pays.ph ... etherlands je ne voudrais que les photos de Netherlands, ben j'ai tout.
Ne faut-il pas de faire le requête récupérer la données "pays" ?
J'avoue que pour débuter j'ai peut-être pas choisi la facilité
Posté : 07 nov. 2008, 18:31
par charabia
Il faut faire une requête avec une jointure. Si tu as saisis ce que tu as fait pour ta première requête, celle-ci est pareil à peu de chose près.
Ensuite tu rajoutes la clause "AND" pour récupérer la valeur pays avec $_GET['pays']