Afficher des images correspondant à un identifiant image

matye21
Invité n'ayant pas de compte PHPfrance

14 nov. 2008, 16:39

Bonjour

Je souhaiterais afficher des photos ayant un rapport avec l'image affichée suivant URL.

Explication :

J'ai 2 tables :
table produit: id, titre, photo,prix,producteur
table producteur : id, prenom, nom

Pour le moment lorsque je tape dans mon URL ....?id=1001, j'ai la photo de mon produit qui s'affiche ainsi que titre, prix, nom du producteur, etc. Ce produit a comme n° producteur(table 1) 1000 correspondant à l'id de ma table producteur.

Je souhaiterais afficher sur la page tous les produits correspondants au meme producteur.

ex : produit 1001 (n°producteur1000)
je voudrais que produit 1002, 1003, ... qui ont le n° producteur 1000 s'affichent à un endroit precis et si possible dans une taile plus petite

Comment dois-je m'y prendre ?

Merci d'avance pour vos réponses

Mammouth du PHP | 1353 Messages

14 nov. 2008, 16:46

Bonjour,

Tu pourrais faire la chose suivante :

Lorsque tu affiches ton premier produit (grâce à son ID) tu récupères l'id producteur que tu stockes dans une variable $producteur.
Ensuite tu fais une requete du type :
"SELECT id, titre, photo,prix FROM produit WHERE producteur = ".$producteur." AND id !=".$id
(avec $id = $_GET["id"] (sécurisé...))

Ensuite tu n'as plus qu'a afficher les résultats dans la zone de ton choix avec la taille de ton choix...
Tell me and I forget. Teach me and I remember. Involve me and I learn.

matye21
Invité n'ayant pas de compte PHPfrance

14 nov. 2008, 17:16

Désolé je suis débutant

Voici mon code qui me permet d'afficher la photo d'un produit suivant son id:
 <?php   
mysql_connect('localhost', 'root') OR die('Erreur de connexion à la base');   
mysql_select_db('xxxxxxx') OR die('Erreur de sélection de la base');   
$id = $_GET['id'];   
$requete = mysql_query("SELECT * FROM boutique_produits WHERE id = '$id'") or die ("Erreur de la requête MySQL");   
mysql_close();   
while($resultat = mysql_fetch_array($requete))   
{   
$photo = $resultat['photo'];  
echo "<img src=$photo>";   

}   
?> 
Voici mes 2 tables pour être precis sur les termes :
boutique_produits avec comme champ id, titre, photo,prix_ttc,producteur
boutique_producteurs avec comme champ id,nom, prenom

 <?php   
mysql_connect('localhost', 'root') OR die('Erreur de connexion à la base');   
mysql_select_db('xxxxxxx') OR die('Erreur de sélection de la base');   
$id = $_GET['producteur];   
$requete = mysql_query("SELECT boutique_produits.id,boutique_produits.titre,boutique_produits.photo FROM boutique_produits WHERE producteur = ".$producteur." AND id !=".$id") or die ("Erreur de la requête MySQL");   
mysql_close();   
while($resultat = mysql_fetch_array($requete))   
{   
$photo = $resultat['photo'];  
echo "<img src=$photo>";   

}   
?>
Je ne comprends plus à partir du WHERE

Mammouth du PHP | 1353 Messages

14 nov. 2008, 17:39

Ok je vais essayer d'être plus clair.

Dans la première partie de ton code tu récupères l'ID passée dans l'URL avec le $_GET["id"].
Puis tu fais une requete : SELECT * FROM boutique_produits WHERE id = '$id'

qui te permet de récupérer $resultat["photo"] qui est la valeur de photo associé à cet id.
Si j'ai bien compris, en dessous de ca tu veux afficher les autres photos.

Pour cela il faut que tu récupères la valeur de producteur, puis que tu exécutes une seconde requete pour avoir tous les produits qui ont le meme producteur que celui que tu as affiché sauf celui déjà affiché.

Donc dans l'idée quand tu fais
$photo = $resultat["photo"];
//ajoute un 
$prod = $resultat["producteur"];
Comme ca tu aura le producteur.
Dans la suite de ton code, après ton while, fais une deuxieme requete $requete2 et cette fois au lieu de récupérer en fonction de l'id tu fais quelque chose du genre :
$requete2 = mysql_query("SELECT photo FROM boutique_produits WHERE id != ".$id" AND producteur='".$producteur."'") or die ("Erreur de la requête MySQL");
Ainsi tu auras les resultats que tu veux et en procédant comme tu l avais fait tu pourras les afficher.

ATTENTION :
1. Il faudra que tu fasse le mysql_close() APRES la deuxième requete
2. Il faut essayer de te protéger un peu des injections SQL donc fais plutot un $id=mysql_real_escape_string($_GET["id"]) (renseigne toi sur ces fonctions et termes pour y voir plus clair)
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Matye21
Invité n'ayant pas de compte PHPfrance

14 nov. 2008, 18:24

En fait je voudrais que s'affiche les autres produits du producteur.
Pas obligatoirement dans le même code que le produit affiché, dans un layer en dessous emple.

Suite à tes explications j'ai essayé de faire un code.

Le voilà, par contre j'ai un souci, il me dit variable indefinied et erreur dans la requête :
<?php    
mysql_connect('localhost', 'root') OR die('Erreur de connexion à la base');    
mysql_select_db('xxxxxx') OR die('Erreur de sélection de la base');    
$id = $_GET['id'];    
$requete = mysql_query("SELECT photo FROM boutique_produits WHERE id! = '.$id' AND producteur='".$producteur."'") or die ("Erreur de la requête MySQL");    
mysql_close();    
while($resultat = mysql_fetch_array($requete))    
{    
$producteur = $resultat['producteur'];   
echo "<img src=$photo>";    

}    
?>
Merci d'avance

Mammouth du PHP | 1353 Messages

14 nov. 2008, 18:26

Ca me parait normal... $producteur n'existe pas au moment de la requete donc le producteur=$producteur ne peut pas marcher...

Reprend les étapes de mon précédent post, puisque tu veux les produits du meme producteur il faut commencer par récupérer le producteur du produit que tu appelles initialement (le id= dans lurl...) sauf si dans ton url tu as auss un &producteur=... mais tu ne l'as pas précisé...
Tell me and I forget. Teach me and I remember. Involve me and I learn.

matye21
Invité n'ayant pas de compte PHPfrance

14 nov. 2008, 19:11

Non je n'ai pas de &producteur

dans l'url je mets le id du produit, donc il faut qu'à partir de cet id produit il sache que id produit = producteur et faire en sorte qu'il retrouve tous les id ayant le même producteur.

Donc il faut que je lui dise ce qu'est $producteur.

Mammouth du PHP | 1353 Messages

17 nov. 2008, 11:28

C'est pour ca qu'il faut procéder comme je t'ai expliqué, une premiere requete pour afficher le produit et stocker la valeur de $producteur, et une seconde pour chercher tous les produits qui ont le meme producteur...
Tell me and I forget. Teach me and I remember. Involve me and I learn.