Bonjour à toutes et tous.
J'expose mon problème...
Table 1 structure : phId - phNom... Soit :
1 - toto.jpg
2 - titi.jpg
3 - tata.jpg
4 - tutu.jpg
Table 2 structure : phMcId - PhMcNom... Soit :
10 - lapin
11 - chien
12 - chat
13 - cheval
Table 3 structure : phMcId - PhId... Soit :
11 - 1
12 - 1
10 - 3
10 - 4
10 - 2
11 - 2
Comme vous pouvez le constater, il s'agit d'une base mySql destinée à gérer une indexation de photo. Donc, la table 1 regroupe la liste des photos, la table 2 regroupe la liste des mots clés et la table 3 est une table de correspondance entre les mots clés et les photos.
J'ai fait un formulaire à une entrée en html de type "input" dans lequel l'internaute peut saisir 1 ou plusieurs mots clés. J'obtiens alors une chaine du type "chat chien" par exemple.
Après avoir "éclaté" la chaine à l'aide de l'instruction PHP EXPLODE, je recherche dans ma base les photos qui possèdent à la fois le mot clé "chat" et le mot clé "chien" (quand on regarde la description de mes tables, ci-dessus, on se rend compte que seule la photo "toto.jpg" répond à cette requête).
Voici la requête que j'utilise :
Or, le résultat de cette requête m'affiche toutes les photos qui possèdent le mot clé "chat" OU "chien" OU ("chien" ET "chat")...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT phMcId, phId, COUNT(*) FROM table 3 WHERE (phMcId='11' OR phMcId='12') GROUP BY phId
J'imagine que ma requête est mal construite mais je ne vois pas comment la faire autrement.
Pouvez-vous m'aider svp ?
Partager