Problème d'affichage image selon un identifiant unique

matye21
Invité n'ayant pas de compte PHPfrance

07 nov. 2008, 12:22

Bonjour

Je suis débutant en php. Je travailles avec Dreamweaver et EasyPhp.
J'ai créé une base de données avec id, nomduvin, commentaires,...,photo.
J'ai placé l'Url de mon image dans ma base de donnés.
J'ai construit un code pour afficher mes images.

Mon problème et ma question :
Toutes mes photos s'affichent sur ma page, comment faire pour faire apparaître uniquement la photo corresponsant à l'identifiant du produit.

Merci d'avance , voici le code utilisé
<?php  
     mysql_connect('localhost', 'root') OR die('Erreur de connexion à la base');   
     mysql_select_db('XXXXXXXX') OR die('Erreur de sélection de la base');   

     $requete = mysql_query('SELECT photo FROM boutique_produits') OR die('Erreur de la requête MySQL');   

     mysql_close();   
     while($resultat = mysql_fetch_assoc($requete))  
     {   
                  echo "<img src=".$resultat['photo'].">";   
 
     }   
?>

Avatar du membre
ViPHP
ViPHP | 3008 Messages

07 nov. 2008, 12:39

Hello matye21 !

Utilise le bbcode PHP pour que ton code soit plus lisible.

Pour ta demande, regarde la clause WHERE à mettre dans ta requête.

:arrow: http://www.phpdebutant.org/article117.php

matye21
Invité n'ayant pas de compte PHPfrance

08 nov. 2008, 13:48

Merci charabia pour ton aide

J'ai lu le doc sur WHERE, j'arrive à m'en servir pour du texte mais toujours pas pour les images.

J'ai deux tables:

boutique_produits:
id
isbn
titre
id_image
prix_ttc
...

up_name:
id_image
extension

Je souhaiterais que lorsque je sélectionne id=1001 qu'il me mette l'image correspondante située dans ma base de données.

Mon est toujours le suivant et je galère pour lui faire comprendre que:
SELECT extension FROM up_name WHERE ( id_image de ma table boutique_produits est égal à id-image de ma table up_name)

Merci pour votre aide

Mammouth du PHP | 686 Messages

08 nov. 2008, 13:53

Pourquoi ne pas avoir tout simplement mis directement ton champ extension avec ta table article ?

ViPHP
ViPHP | 1996 Messages

08 nov. 2008, 13:54

Bien essaye avec une relation de table et champ en utilisant un point entre les deux :

Voici le style classique :

Code : Tout sélectionner

SELECT nom_de_la_table1.nom_du_champ FROM nom_de_la_table_1, nom_de_la_table_2 WHERE ...
Ce qui te donnera

Code : Tout sélectionner

SELECT up_name.extension FROM boutique_produits, up_name WHERE boutique_produits.id_image = up_name.id-image
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

matye21
Invité n'ayant pas de compte PHPfrance

08 nov. 2008, 13:56

j'avais fait ça au départ avec le lien directement dans ma table produits avec un champ photo dans lequel était inscrit mon lien images/1001.gif

Mais j'avais un probleme de requete parce que toutes mes photos s'affichent.

Mammouth du PHP | 686 Messages

08 nov. 2008, 13:58

a ok parce que tu as plusieurs images pour un article non ?

matye21
Invité n'ayant pas de compte PHPfrance

08 nov. 2008, 13:59

non en fait ce sont des bouteilles.
Chaque produit à sa photo de bouteille

ViPHP
ViPHP | 1996 Messages

08 nov. 2008, 14:02

Essaye alors avec :

Code : Tout sélectionner

SELECT up_name.extension FROM boutique_produits, up_name WHERE boutique_produits.id_image = up_name.id-image AND boutique_produits.id_image = '1001' LIMIT 1
Ou un truc du genre...

EDIT : j'ai mal écrit, je recommence
Modifié en dernier par Aureusms le 08 nov. 2008, 14:05, modifié 2 fois.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Mammouth du PHP | 686 Messages

08 nov. 2008, 14:03

Alors je ne comprend pas pourquoi lors de ta requete il y avait toutes tes photos qui s'affichaient alors.
Ca t'affichait les photos de tous tes articles lorsque tu voulait afficher celle d'un seul article ?
A mon avis il faudrai que tu mette le lien vers ton image dans ta base articles ca evitera pas mal de prise de tete et de complications.
On peut reprendre ca dès le début ou ca marche pas avec ta requete si tu le souhaite :D

matye21
Invité n'ayant pas de compte PHPfrance

08 nov. 2008, 14:16

je veux bien merci

En fait j'essai de m'entraîner à faire un site de e-commerce

Quand j'inscris dans l'url de la page ....?id=1001
Sur ma page s'inscris grace à mes requetes le nom du produit ainsi que le producteur mais avec mon code php pour insérer ma photo j'obtiens toutes les photos de ma base. (pour info j'ai mis seulement images/1001.gif dans mon champ photo.)

Ce que je ne comprends pas c'est comment à partir de l'identifiant 1001 c'est à dire article 1001 avoir la photo correspondant 1001.gif placé dans un dossier images dans mon disque dur.

Voici le code
<?php   
     mysql_connect('localhost', 'root') OR die('Erreur de connexion à la base');   
     mysql_select_db('XXXX') OR die('Erreur de sélection de la base');   

     $requete = mysql_query('SELECT up_name.extension FROM boutique_produits, up_name WHERE boutique_produits.id_image = up_name.id_image') OR die('Erreur de la requête MySQL');   
     mysql_close();   
     while($resultat = mysql_fetch_assoc($requete))  
     {   
  
                          echo "<img src=".$resultat['extension'].">";      

  }
?>
C'est le code que l'on m'a donné plus haut Areusms mais qui donne le meme résultat que mon ancien cad toutes photos qui s'affichent (2 photos vu que j'ai deux photos dans ma base de données)

Merci d'avance pour votre aide

Mammouth du PHP | 686 Messages

08 nov. 2008, 14:20

Oula deja rien que ta requete mySQL je la pige pas trop. Comment s'appellent les champs de ta table ?
Modifié en dernier par sylvaing26 le 08 nov. 2008, 14:24, modifié 2 fois.

matye21
Invité n'ayant pas de compte PHPfrance

08 nov. 2008, 14:23

j'ai deux tables
la première : boutique_produits
avec comme champs :
id
titre
id_image
prix_ht
prix_ttc
etc...

la deuxième : up_name (ou j'aurais du l'appeler boutique_photos,bref)
avec comme champs:
id_image
extension

Mammouth du PHP | 686 Messages

08 nov. 2008, 14:25

On va repartir sur l'idée que ton extension est dans la même base que tes articles ca sera bien moins compliqué et ca evitera de faire moins de requetes a ta base
Essaie ceci :
<?php 
mysql_connect('localhost', 'root') OR die('Erreur de connexion à la base'); 
mysql_select_db('XXXX') OR die('Erreur de sélection de la base'); 
$id_image = $_GET['id'];
$requete = mysql_query('SELECT extension FROM boutique_produits WHERE id_image = "$id_image"') OR die('Erreur de la requête MySQL'); 
mysql_close(); 
while($resultat = mysql_fetch_array($requete)) 
{ 

echo "<img src=".$resultat['extension'].">"; 

} 
?> 

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

08 nov. 2008, 14:27

Modération :
matye21, 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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer