Bonjour à tous,
Je vais essayer d'expliquer mon problème le plus clairement possible.
Voici tout d'abord ce que j'ai actuellement.
Cela me sert pour la génération d'un menu avec arborescence :
Voici la table SQL que j'ai pour obtenir le menu ci-dessus :
Pour ceux qui souhaites le code SQL :Si je souhaite faire un moteur de recherche, je souhaiterais que l'on puisse sélectionner une catégorie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 -- -- Structure de la table `menus` -- CREATE TABLE `menus` ( `id` int(11) NOT NULL, `nom` varchar(250) NOT NULL, `visible` smallint(6) NOT NULL default '0', `lvl` int(11) NOT NULL, `cat` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Contenu de la table `menus` -- INSERT INTO `menus` (`id`, `nom`, `visible`, `lvl`, `cat`) VALUES (0, 'Acceuil', 1, 0, 0), (1, 'Forums', 1, 1, 3), (2, 'Chat', 1, 1, 4), (3, 'Tutoriels', 1, 1, 5), (4, 'Livres', 1, 1, 6), (5, 'F.A.Q.', 1, 1, 7), (6, 'Sources', 1, 1, 8), (7, 'C', 1, 0, 0), (8, 'Forums C', 1, 1, 9), (9, 'F.A.Q. C', 1, 1, 10), (10, 'Eclipse', 1, 0, 0), (11, 'ACCUEIL ECLIPSE', 1, 1, 11), (12, 'FORUMS ECLIPSE', 1, 1, 12), (13, 'FAQ ECLIPSE', 1, 1, 20), (14, 'TUTORIELS ECLIPSE', 1, 1, 13), (15, 'LIVRES ECLIPSE', 1, 1, 14), (16, 'BLOGS ECLIPSE', 1, 1, 15), (17, 'PC', 1, 0, 0), (18, 'ACCUEIL HARDWARE', 1, 1, 16), (19, 'FORUM HARDWARE', 1, 1, 17), (20, 'Sécurité', 1, 0, 0), (21, 'Accueil Sécurité', 1, 1, 18), (22, 'Forum Sécurité', 1, 1, 19);
Par exemple je souhaites rechercher dans toutes les sous catégories de la catégorie "C".
Pour ceci je fais cela en deux fois.
Je génère ce premier code SQL me permettant de sélectionner l'id supérieur à ma catégorie principale et de MÊME lvl (généré automatiquement avec mon code en PHP):
Ce qui me permet de trouver l'id : 10
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT `id` FROM `menus` WHERE `lvl` = ( SELECT `lvl` FROM `menus` WHERE `id` = 7 ) AND `id` > 7 LIMIT 0, 1
Ensuite je génère une autre code SQL sur une autre table pour aller chercher de nouvelles informations qui vont être affichées cette fois-ci :
Ainsi en PHP je n'ai aucun problème pour le moment à afficher ce que je souhaite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT `id`, `type`, `titre`, `resume` FROM `files` WHERE `titre` COLLATE utf8_unicode_ci LIKE '%script%' AND `status` = 1 AND `type` > 7 AND `type` < 10 ORDER BY `id` DESC
Tout d'abord je souhaite savoir comment optimiser ces requêtes SQL sans changer les tables bien évidemment.
La partie ou je bloque pour le moment est de pouvoir sélectionner PLUSIEURS catégories.
-----------------------------------
Si je sélectionne la catégorie la catégorie "C" et la catégorie "PC", je n'ai aucun soucis pour connaitre ces deux id et les envoyer, mais comment créer ma requête pour afficher ce qu'il me faut SANS avoir à faire ces mêmes requêtes pour CHAQUE catégorie ?
Cela serait très lourd pour je suppose pas grand chose...
Est-ce possible, je suppose que oui, mais je ne m'y connais pas assez pour cela en SQL.
Auriez-vous une solution à mon petit soucis actuel ?
Merci par avance.
Partager