OVH Cloud OVH Cloud

menu arborescent

5 réponses
Avatar
queribus2000
Salut la foule,

Voilà quelques jours que je me prends la tête. Les recherches de tut
et de sources ont été infructueuses.
Au départ, le probléme me semblait simple:
Je pars d'une base mysql comportant 3 champs:
category_id | parent_id | category_name
À partir de cette table, j'aimerais developper un menu arborescent
tout simple en PUR php (PUR php pour de raison de compatibilité).
Jusqu'à une profondeur de 1 sous catégorie pas de probléme. Au delà,
je tourne en rond et je patauge.
S'il y a quelqu'un à qui ça parle, je lui érigerai une icone au dessus
de la TV. Bref, toute info ou aide sera la bienvenue.
Merci.

PS: Pour plus de précisions voir
http://www.agua-amarga.com/ecom/fr/test3.php
EX: VÉTEMENTS/Accessoires
J'aimerais que Pantalons et T-shirt s'affiche sous
LOGICIELS/MATÉRIELS/VÉTEMENT/Accessoires et ainsi de suite...

5 réponses

Avatar
"m a r k u s" a écrit dans le message de news:

Salut la foule,

Voilà quelques jours que je me prends la tête. Les recherches de tut
et de sources ont été infructueuses.
Au départ, le probléme me semblait simple:
Je pars d'une base mysql comportant 3 champs:
category_id | parent_id | category_name
À partir de cette table, j'aimerais developper un menu arborescent
tout simple en PUR php (PUR php pour de raison de compatibilité).
Jusqu'à une profondeur de 1 sous catégorie pas de probléme. Au delà,
je tourne en rond et je patauge.
S'il y a quelqu'un à qui ça parle, je lui érigerai une icone au dessus
de la TV. Bref, toute info ou aide sera la bienvenue.
Merci.

PS: Pour plus de précisions voir
http://www.agua-amarga.com/ecom/fr/test3.php
EX: VÉTEMENTS/Accessoires
J'aimerais que Pantalons et T-shirt s'affiche sous
LOGICIELS/MATÉRIELS/VÉTEMENT/Accessoires et ainsi de suite...


bonjour,

je t'ai répondu sur ton email en fonction de la page que tu as donné en
exemple.

@+
Julien

Avatar
bertrand

Salut la foule,

Voilà quelques jours que je me prends la tête. Les recherches de tut
et de sources ont été infructueuses.
Au départ, le probléme me semblait simple:
Je pars d'une base mysql comportant 3 champs:
category_id | parent_id | category_name
À partir de cette table, j'aimerais developper un menu arborescent
tout simple en PUR php (PUR php pour de raison de compatibilité).
..


Bonsoir,

Ma précédente réponse semble n'être jamais parvenue, donc je la répète.
"Bonjour,
Je suis en train de travailler sur le même sujet car mon menu actuel ne
me satisfait pas (un peu trop codé en dur).

Une différence, je n'utilise pas de base Mysql pour stocker les
relations du menu, mais un fichier. Ceci pour des raisons de performance.

Par flemme, je suis reparti de TreeMenuXL.php de Chip Chapin
(http://www.chipchapin.com).
Après une après midi de travail, j'en suis à quelque chose qui
fonctionne mais qui mérite encore d'être toiletté.

Dés que ce sera à peu près propre, je le mettrai à disposition sur mon site.

Pour voir si cela peux te convenir, regarde le menu actuel de mon site,
le résultat devrait être quasi identique. (les bugs en moins !)

Tu peux me recontacter par mon reply-to ou via l'adresse du site.

Cordialement."

J'ai pas mal avancé pendant le week end; encore quelques jours et ce
sera utilisable.

--
Bertrand Perrotte

Webmaistre <url:http://canoe.kayak.free.fr/>
secrétaire du Canoë Kayak Gennevilliers

Avatar
Jean-Luc L'Hotellier
"m a r k u s" a écrit dans le message de
news:

Au départ, le probléme me semblait simple:
Je pars d'une base mysql comportant 3 champs:
category_id | parent_id | category_name
À partir de cette table, j'aimerais developper un menu arborescent
tout simple en PUR php (PUR php pour de raison de compatibilité).
Jusqu'à une profondeur de 1 sous catégorie pas de probléme. Au delà,
je tourne en rond et je patauge.


Explication simplifié :

Tu passes uniquement la sous-catégorie en paramètre
Tu recherches les parents de la sous-catégorie (ce qui te permet au passage
de repérer la profondeur)
Ensuite tu développes chaque niveau parent.

Si tu as un point sur lequel tu coinces, n'hésite pas à demander des
précisions.

--
Jean-Luc L'Hôtellier
http://www.ancolie-photo.com

Avatar
Jean-Marc Molina
Recherche le mot "hiérarchie" sur ce newsgroup, on en a parlé il y a
quelques jours.

JM

--
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Avatar
Khone
Salut

Je crois que la seule solution de ce genre de problème
avec le schéma que tu as choisi est d'utiliser une fonction
récursive comme celle-ci (pas vérifiée) :

function BuildTree(&$a, $Level = 0, $Parent = 0)
{
$q = " SELECT *
FROM Tbl
WHERE parent_id = ".$Parent;
$r = mysql_query($q) or die(mysql_error());
while ($t = mysql_fetch_assoc($r))
{
$a[$t["category_id"]] = array(
"level" => $Level,
"name" => $t["category_name"],
"parent_id" => $t["parent_id"]
);
BuldTree($a, $Level + 1, $t["parent_id"]);
}
}

$Rub = array();
BuildTree($Rub);
print_r($Rub);

Pour une autre organisation de ta hiérarchie, un article intéressant :
http://perso.club-internet.fr/brouardf/SQL/Tree/SQL_tree.html


Khône