Page 1 sur 1

Passage d'un paramètre dans l'url : marche pas ! [RESOLU]

Posté : 05 mars 2009, 19:56
par Bjorken
Bonjour,

J'explique la situation :

J'utilise MAMP (PhpMyAdmin) et Dreamweaver CS4 pour la création d'un petit site d'exposition de bijoux et de lampes.
J'ai une base de donnée MySQL qui comporte 2 tables :

La table gamme avec les champs :

Code : Tout sélectionner

CREATE TABLE IF NOT EXISTS `gamme` ( `id` int(10) unsigned NOT NULL auto_increment, `nom` varchar(64) NOT NULL, `numero` int(3) unsigned NOT NULL, `descr` text NOT NULL, PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=5 ;
numero correspond au numero de la gamme dont fait partie le produit.

La table fiche_produit avec les champs :

Code : Tout sélectionner

CREATE TABLE IF NOT EXISTS `fiche_produit` ( `id` int(10) unsigned NOT NULL auto_increment, `titre` varchar(64) NOT NULL, `texte` text NOT NULL, `gamme` int(3) unsigned NOT NULL, `date` date default '0000-00-00', `photo` varchar(64) default NULL, PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=4 ;
Les bijoux et les lampes se répartissent en différentes gammes (bijoux en or, bijoux en argent, lampadaires, lampes de bureaux...).

J'ai 3 fichiers PHP :
- La page index.php qui affiche un menu de navigation ainsi que les 3 dernières créations de lampes et bijoux.
- Une page gamme.php qui affiche les photos d'une gamme sous forme de vignettes et la description de la gamme.
- Une page fiche.php qui affiche le détail du produit après avoir cliqué sur la vignette de son choix dans la page gamme.php. Elle comporte la photo de la fiche, son nom et descriptif.

Depuis la page d'index, mon menu se présente sous la forme d'un déroulant :
Image

J'ai crée instruction SQL sous la forme :

Code : Tout sélectionner

SELECT * FROM gamme WHERE numero = colname
colname étant la variable d'URL que j'ai placé dans les liens "Lampes de bureau".... "Lampadaire"...
Dans le code, ça donne ça :

Code : Tout sélectionner

<a href="gammes.php?numero=3">Lampadaires</a>
On voit bien en passant la souris sur le menu que le paramètre passe bien :
Image

Une fois sur la page gamme, j'ai bien mes photos qui correspondent à la gamme choisie qui s'affichent.
Dans la page gamme j'ai l'instruction SQL suivante :

Code : Tout sélectionner

SELECT gamme.numero, fiche_produit.gamme, fiche_produit.photo FROM fiche_produit, gamme WHERE fiche_produit.gamme=gamme.numero AND gamme.numero= idURL
La variable idURL prend la valeur de 'numero', donc la variable d'URL transmise.

Ensuite ce que je voudrais dans cette page gamme c'est qu'en cliquant sur une des vignettes on aille sur la page fiche.php qui affiche la fiche correspondante à la vignette cliquée.

Et c'est là que je sèche totalement depuis ce matin :cry:

Je n'arrive pas à trouver comment écrire une requête qui me permettrait de faire afficher la fiche qui est en rapport avec la vignette de la page gamme !!

Si j'affiche ma page fiche.php après avoir crée dans cette page une requete avec un passage de paramètre dans l'URL comme ça :

Code : Tout sélectionner

SELECT * FROM fiche_produit WHERE id = colname
colname étant le paramètre d'URL à passer dans l'adresse

dans ce cas là en tapant mon adresse dans l'URL du navigateur dans le stye ....fiche.php.id=2
j'ai bien l'affichage de ma fiche !

Mais donc comment faire passer ce paramètre depuis ma page gamme en cliquant sur une des vignettes pour faire afficher la fiche concernée ?

Si quelqu'un peut m'aider ! Ca m'arrangerait, je patauge grave !

J'espère ne pas être hors sujet
Merci d'avance !!!

Posté : 05 mars 2009, 22:39
par furiouslol
Salut,

Tu dois procéder exactement de la même façon qu'avec tes liens supérieurs, sauf que dans ce cas ton lien est une image et non pas un texte
<a href=....?colname=N°deproduit><img src="TonImageTiréDeLaBase.jpg"></a>
Si j'ai mal compris ton probleme n'hésite pas a préciser :)

Posté : 05 mars 2009, 23:21
par Bjorken
Non je ne peux pas procéder de la même façon car dans mon menu je connais d'avance les valeurs des variables d'URL puisqu'elles sont fixes : Menu Bijoux argent=1 Menu Bijoux Or=2 etc.
Donc je passe en paramètre de lien une valeur numérique connue.

Ici mes vignettes s'affichent dynamiquement, je ne connais donc pas à l'avance ce qui va être affiché.
Mon problème est donc de savoir comment faire afficher la fiche produit en partant de la vignette affichée dynamiquement.

Posté : 06 mars 2009, 08:15
par furiouslol
ok

Alors afficher une liste de vignette dans ton cas cela implique d'afficher une liste de produit, meme si tu n'affiche que l'image, ou la vignette associée a ce produit. Donc pour ce faire, tu parcours la table des produits que tu veux afficher, et tu construit ta liste de produit a partir de la base ( enfin normalement ^^) du coup quand tu affiche la vignette d'un produit, tu dois connaitre son identifiant ( dans la base également ) et ainsi le faire apparaitre dans le lien.
Ainsi cet ID est récupérable lorsque tu as cliqué sur la vignette

Posté : 06 mars 2009, 08:19
par Bjorken
Ok, donc cela supposerait que je supprime la table gamme et que j'affiche les vignettes à partir de la table produit ?

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 06 mars 2009, 08:32
par furiouslol
Non tes tables sont très bien comme elles sont, par contre oui il te faudrait afficher ta page gamme en fonction du contenu de ta table produit
Quand tu affiche ta page "gamme", tu affiches une liste de produit (ou de vignette de produit) répondant a une requête du style :
SELECT ID, PHOTO FROM produit WHERE id_gamme=1;
Ainsi tu récupères en php un tableau dans lequel chaque ligne contient a la fois l'image et l'ID du produit. Ainsi tu peux créer ta liste de liens qui vont bien par dessus tes images. Évidement il manque le processus de fabrication de vignette, car dans la base tu n'as que le nom de l'image et c'est bien normal.

Posté : 06 mars 2009, 08:54
par Bjorken
J'ai trouvé la solution !!! (En fait on me l'a communiqué pour être plus précis)

Il suffit d'ajouter fiche_produit.id dans ma requête

Code : Tout sélectionner

SELECT gamme.numero, fiche_produit.gamme, fiche_produit.photo, [b]fiche_produit.id[/b] FROM fiche_produit, gamme WHERE fiche_produit.gamme=gamme.numero AND gamme.numero= idURL
Et ainsi l'id de fiche produit dont provient la vignette est connu !!!!!!!!!

Merci pour vos aides en tout cas.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 06 mars 2009, 09:02
par furiouslol
Pas de problème, si ton problème est résolu n'hésite pas a cliquer sur le bouton "résolu" dans ton message