Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème ligne de code PHP/MySQL

1 réponse
Avatar
Pierre
Bonjour à tous,

Voici mon problème :
J'ai dans une base MySQL une table nommée "photo" qui comprend des champs,
titre, description, etc...
Il y a également 3 champs qui classent cette photo dans des thèmes, ces
champs se nomment rubriqueID1, rubriqueID2, rubriqueID3.
Dans ces champs j'entre des numéros. 1 pour rubrique paysage, 2 pour
rubrique macrophoto, etc...
Une photo peut donc se classer dans 3 rubriques maxi.

J'ai une autre table nommée "rubrique" qui comprend un champ ID
autoincrémenté et un champ "theme" qui décrit les thèmes : paysage,
macrophoto, etc...

Je voudrais à l'aide d'un menu déroulant qui comprend la liste des thèmes
(Paysage, Macrophoto...) faire afficher les photos correspondantes par la
lecture des rubriquesID1, rubriqueID2, rubriqueID3.
J'y arrive par le code suivant (à l'aide de Dreamweaver), mais uniquement
avec rubriqueID1 de la table photo.

Voici ce que cela donne :
---------------------------------------------------
SELECT rubrique.theme, photos.reference, photos.titre, photos.auteur,
photos.prix, photos.photo
FROM rubrique, photos
WHERE rubrique.ID=coltheme AND rubrique.ID=photos.rubriqueID1
--------------------------------------------------
coltheme est une variable qui se voit attribuer la valeur d'exécution
$HTTP_GET_VARS['VARtheme'].
VARtheme étant le nom du menu déroulant.

Dans ce cas de figure j'obtiens bien la liste des photos dont le thème
correspond à rubriqueID1.

Comment faire pour que le système analyse également les deux autres
rubriques ?
J'ai essayé ceci :

SELECT rubrique.theme, photos.reference, photos.titre, photos.auteur,
photos.prix, photos.photo
FROM rubrique, photos
WHERE rubrique.ID=coltheme AND rubrique.ID=photos.rubriqueID1 AND
rubrique.ID=photos.rubriqueID2 AND rubrique.ID=photos.rubriqueID3

Mais ça ne marche pas !
J'ai essayé avec OR, ça ne marche pas non plus. Il m'affiche n'importe quoi
!

Si quelqu'un peut m'aider !!!!

Merci d'avance !
Pierre

1 réponse

Avatar
olivier
"Pierre" a écrit dans le message de news:
41bc8f38$0$3403$
Bonjour à tous,

Voici mon problème :
J'ai dans une base MySQL une table nommée "photo" qui comprend des champs,
titre, description, etc...
Il y a également 3 champs qui classent cette photo dans des thèmes, ces
champs se nomment rubriqueID1, rubriqueID2, rubriqueID3.
Dans ces champs j'entre des numéros. 1 pour rubrique paysage, 2 pour
rubrique macrophoto, etc...
Une photo peut donc se classer dans 3 rubriques maxi.

J'ai une autre table nommée "rubrique" qui comprend un champ ID
autoincrémenté et un champ "theme" qui décrit les thèmes : paysage,
macrophoto, etc...

Je voudrais à l'aide d'un menu déroulant qui comprend la liste des thèmes
(Paysage, Macrophoto...) faire afficher les photos correspondantes par la
lecture des rubriquesID1, rubriqueID2, rubriqueID3.
J'y arrive par le code suivant (à l'aide de Dreamweaver), mais uniquement
avec rubriqueID1 de la table photo.

Voici ce que cela donne :
---------------------------------------------------
SELECT rubrique.theme, photos.reference, photos.titre, photos.auteur,
photos.prix, photos.photo
FROM rubrique, photos
WHERE rubrique.ID=coltheme AND rubrique.ID=photos.rubriqueID1
--------------------------------------------------
coltheme est une variable qui se voit attribuer la valeur d'exécution
$HTTP_GET_VARS['VARtheme'].
VARtheme étant le nom du menu déroulant.

Dans ce cas de figure j'obtiens bien la liste des photos dont le thème
correspond à rubriqueID1.

Comment faire pour que le système analyse également les deux autres
rubriques ?
J'ai essayé ceci :

SELECT rubrique.theme, photos.reference, photos.titre, photos.auteur,
photos.prix, photos.photo
FROM rubrique, photos
WHERE rubrique.ID=coltheme AND rubrique.ID=photos.rubriqueID1 AND
rubrique.ID=photos.rubriqueID2 AND rubrique.ID=photos.rubriqueID3

Mais ça ne marche pas !
J'ai essayé avec OR, ça ne marche pas non plus. Il m'affiche n'importe


quoi
!

Si quelqu'un peut m'aider !!!!

Merci d'avance !
Pierre






Bonjour Pierre,

Je pense que du devrais organiser ta base de données différemment pour
règler ton problème.

TABLE PHOTO [tu sucre les 3 champs thèmes et tu rajoute une clé primaire]
id -> clé primaire auto-incrémentée
reference
titre
auteur
prix
photo

TABLE ASSOC (table de relation PHOTO <-> THEMES) [pour chaque association
photo/themes, tu créé un enregistrement contenant les ID des deux tables]
ID-> clé primaire auto-incrémentée
IDphoto clé étrangère PHOTO
IDreference clé étrangère THEME

TABLE THEME
ID-> clé primaire auto-incrémentée
Theme

Exemple de requête (ex. l'utilisateur à sélectionné dans le combo le théme
dont l'ID est 1) :
SELECT * FROM PHOTO
LEFT JOIN ASSOC ON PHOTO.ID=ASSOC.IDPHOTO
LEFT JOIN THEME ON ASSOC.IDTHEME=THEME.ID
WHERE THEME.ID=1;

récupére tous les champs de tous les enregistrements de PHOTO relié (via
ASSOC) au THEME avec ID=1

Hope this help

Olivier