8796 sujets

Développement web côté serveur, CMS

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 :
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 :
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 :
http://test.pierre-leccia.net/divers/menu.png

J'ai crée instruction SQL sous la forme :
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 :
<a href="gammes.php?numero=3">Lampadaires</a>


On voit bien en passant la souris sur le menu que le paramètre passe bien :
http://test.pierre-leccia.net/divers/param.png

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 :

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 :
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 à tous !
Modifié par Bjorken (06 Mar 2009 - 09:11)
Salut,

alors pour commencer et à condition que j'aie bien tout compris le champ numero ne sert à rien puisque le champ id de la table gamme est déjà un identifiant unique.

Pour ce qui est de ta question il suffit de rajouter la récupération du champ id de la table fiche_produit et de l'ajouter à ton url (au passage tu récupère 2 fois le numéro de gamme alors qu'à priori tu ne l'utilises pas) :
SELECT [b]fiche_produit.id[/b], fiche_produit.photo
FROM fiche_produit, gamme WHERE fiche_produit.gamme=gamme.numero 
AND gamme.numero= idURL

Modifié par Heyoan (06 Mar 2009 - 07:05)
C'est exact en ce qui concerne la redondance du numero de la gamme.
Par contre pour la requête ça ne marche toujours pas !

Il semble qu'il n'y ait toujours pas de 'lien' logique entre la vignette affichée dans la page gamme et qui résulte de la requête :

SELECT gamme.numero, fiche_produit.gamme, fiche_produit.photo
FROM fiche_produit, gamme
WHERE fiche_produit.gamme=gamme.numero AND gamme.numero= idURL


Car pareil, comment le 'système' peut-il savoir quel numéro de id de fiche_produit correspond à la vignette affichée ?
Lorsque je tape le code que tu m'indiques et que je passe en paramètre d'url sur le lien de la vignette l'id de fiche_produit, cela donne toujours ...?id= et rien du tout...

Je suis assez stupéfait... je pensais que ce serait assez facile !!!
Smiley eek

Je vais peut-être virer ma table gamme et tout regrouper en une seule table. Peut-être que ce sera plus simple.... Smiley mur
Euh... je ne vois toujours pas de récupération de fiche_produit.id dans ta requête alors que c'est cela qui te servira de lien vers la bonne fiche. Smiley rolleyes
PS :

Bjorken a écrit :
Car pareil, comment le 'système' peut-il savoir quel numéro de id de fiche_produit correspond à la vignette affichée ?

Heyoan a écrit :
SELECT [b]fiche_produit.id[/b], fiche_produit.photo
FROM fiche_produit, gamme WHERE fiche_produit.gamme=gamme.numero 
AND gamme.numero= idURL
CA MAAAAAAAAAAAAAAAAAARCHEU EUUUU EUUUU EUUUUUUUUU !!!

Je n'avais pas compris que tu parlais de la requête déjà existante, donc j'avais fait une autre requête sans toucher à la précédente !!
Non de Zeus !! Depuis 24 heures que je m'arrâche les cheveux à comprendre pourquoi l'id ne passait pas !! Il suffisait de rajouter juste ça !!!

Ho là là !!
UN ENORME merci à toi en tout cas !! Ca m'aide bien en plus de cela à comprendre la logique !!

Encore merci Smiley lol