Bonjour,

J'ai une table contenant le menu de mon futur site.
La table contient les données suivantes :

tid = id du terme
vid = id du vocabulaire, ici 1 à chaque fois ce n'est pas utile pour la question
hid = indication de hiérarchie. Par exemple, "Légumes" est l'enfant du parent "Entrées" car le hid de légumes = le tid d'entrées.
poids = juste pour classer

Mon but est de faire un affichage hiérarchisé, mais j'en suis totalement incapable J'ai pourtant passé quelques heures dessus...

L'affichage serait de ce type :
Entrées
--Salades
--Feuilletés
--Légumes
Plats
--Fromage
--Viande
--Volaille

Deux infos importantes : il se peut par la suite qu'il y ait un enfant d'enfant.
Exemple :
Plats
--Fromage
--Viande
--Volaille
----Poulet
----Canard
----Pingouin

Comment construire cette hiérarchie ? J'ai commencé par faire une requête listant toutes les données de la table d'un coup, j'imagine qu'il faut ensuite trier les array en php ?
Je voudrais que ce système ne génère pas 50 requêtes SQL mais si c'est la seule possibilité ce n'est pas grave je mettrai tout en cache.

Un grand merci à vous

PS : voici la table :
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
42
43
44
-- phpMyAdmin SQL Dump
-- version 3.1.3.1
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Ven 24 Juillet 2009 à 10:11
-- Version du serveur: 5.1.33
-- Version de PHP: 5.2.9-2
 
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
 
--
-- Base de données: `monsite`
--
 
-- --------------------------------------------------------
 
--
-- Structure de la table `taxonomie_data`
--
 
CREATE TABLE IF NOT EXISTS `taxonomie_data` (
  `tid` tinyint(4) NOT NULL AUTO_INCREMENT,
  `vid` tinyint(4) NOT NULL,
  `hid` tinyint(4) NOT NULL,
  `nom` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `description` text COLLATE utf8_unicode_ci NOT NULL,
  `poids` tinyint(4) NOT NULL,
  PRIMARY KEY (`tid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=9 ;
 
--
-- Contenu de la table `taxonomie_data`
--
 
INSERT INTO `taxonomie_data` (`tid`, `vid`, `hid`, `nom`, `description`, `poids`) VALUES
(1, 1, 0, 'Entrées', 'Recettes d''entrées.', 1),
(2, 1, 0, 'Plats', 'Recettes de plats.', 2),
(3, 1, 1, 'Salades', 'Recettes de salade.', 1),
(4, 1, 1, 'Feuilletés', '', 2),
(5, 1, 1, 'Légumes', '', 3),
(6, 1, 2, 'Fromage', '', 4),
(7, 1, 2, 'Viande', '', 1),
(8, 1, 2, 'Volaille', '', 2);