Fonction de menu avec niveau infini

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Fonction de menu avec niveau infini

par Merlin82 » 21 août 2006, 13:46

Merci TicTac, je vais tester cette possibilité.
Merci du coup de pouce

par aelurus » 21 août 2006, 13:35

Oui tout a fait mais j'en suis encore a la charte graphique moi :)

par Tictac » 21 août 2006, 13:26

je pense que la solution que j'ai donné doit vous mettre sur la voie !!

par aelurus » 21 août 2006, 11:50

Salut je souhaite aussi faire un truc dans le genre.
Mais je pensais plus a faire comme avec les dossiers mais en remplacant tout les fonction relatif au dossier par des requettes sql et adapter les if en fonction des requettes.Avec un shema bloquer (nombre de sous-rep definie) sa vas mais pour un nombre indefinie je bloque au niveau structure de la base avec les liaisons logiques de la chose....

par Merlin82 » 21 août 2006, 11:34

Salut,
Par exemple, admettons qu'on ait les enregistrements suivants;

Code : Tout sélectionner

ID Parent_id Nom 1 0 Accueil 2 0 Magasin 3 0 Contact 4 2 Suisse 5 2 France 6 4 Lausanne 7 4 Genève 8 4 Zurich 9 2 Paris 10 2 Marseille
J'ai essayé en faisant deux fonctions différentes:

du style:
function menu($result,$article,$param) {
while ($row  =  mysql_fetch_array($result,MYSQL_NUM)) {
	echo $row[2]."<br>";
	ssmenu($row[0]);
	}
}
et une du style:
function ssmenu($id) {
$espace = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
$result = mysql_query("SELECT * FROM menu WHERE parent_id = $id");
while ($row  =  mysql_fetch_array($result,MYSQL_NUM)) {
	echo $espace.$row[2]."<br>";
	do {
	$resultss = mysql_query("SELECT * FROM menu WHERE parent_id = $row[0]");
	$nb = mysql_num_rows($resultss);
	while ($row  =  mysql_fetch_array($resultss,MYSQL_NUM)) {
	ssmenu($rowss[0]);
	}
	break;
	} while ($nb >0);
	}
}
Franchement, je suis paumé, je sais pas comment continuer.

T'as une idée?

par Tictac » 21 août 2006, 11:31

Ta table est insuffisante car tu va devoir connaitre le niveau ainsi que le menu au quel correspond le sous menu.

je dirais donc =>

`id` int(4) NOT NULL auto_increment,
`parent_id` int(4) NOT NULL default '0',
`level` int(4) NOT NULL default '0',
`node_name` varchar(255)',
`node_url` varchar(255)',

de cette manière tu peux créer un menu qui a comme référence le parent 0 et un niveau 5 ou 6 , ect ainsi de suite pour chaque menu ;)

par Rei Itchido » 21 août 2006, 11:27

Quel niveau 2?
Qu'as-tu reussi à faire jusqu'ici?

Fonction de menu avec niveau infini

par Merlin82 » 21 août 2006, 11:25

Salut tout le monde,

Je dois créer une fonction de menu avec des niveaux infinis.

Ma table comporte les champs suivants:

`id` int(4) NOT NULL auto_increment,
`parent_id` int(4) NOT NULL default '0',
`node_name` varchar(255)',
`node_url` varchar(255)',

Par la suite, le menu se fait tout simplement. Tous les entrées ayant 0 sous parent_id sont affichés en premier niveau, pour les autres enregistrements, parent_id indique à quel sous menu l'enregistrement appartient. ;-)

Voilà 2 jours que je travaille dessus !!! (grrr d'ailleur mon boss s'impatiente... lol )
et je reste bloqué au niveau 2, je n'arrive pas à aller plus loin......... !

Si quelqu'un a déjà programmer une fonction de ce type, ou peut me donner des infos, je suis preneur à 300% ! lol

merci 1000 fois et un p'tit bonjour de Suisse à tout le monde.

Merlin