Dans cet article, je vais vous montrer comment créer menu à plusieurs niveaux en PHP et MySQL. Bien sûr, vous pouvez proposer de nombreuses options pour le créer, mais à en juger par le nombre de vos questions sur ce sujet, vous avez besoin d'un exemple. Et je vais le donner dans cet article. Permettez-moi de noter tout de suite que cet article n'a de sens que pour ceux qui savent PHP et sait travailler avec MySQL. Tout le monde doit d'abord passer par là ou lire des livres sur PHP et MySQL.
Commençons par créer une table dans la base de données avec les champs suivants :
- identifiant- identifiant unique.
- titre- des liens d'ancrage dans le menu.
- lien- l'adresse à laquelle mènera l'élément de menu.
- id_parent- identifiant des parents. S'il n'y a pas d'élément parent, alors il sera NULL (ou vous pouvez également mettre 0).
Nous avons réglé la table, maintenant il est temps Code PHP. Complet Code PHP est donné ci-dessous :
$mysqli = new mysqli("localhost", "root", "", "db"); // Se connecte à la base de données
$result_set = $mysqli->query("SELECT * FROM `menu`"); // Sélectionnez tous les enregistrements de la table avec le menu
$éléments = tableau(); // Tableau pour les éléments de menu
while (($row = $result_set->fetch_assoc()) != false) $items[$row["id"]] = $row; // Remplit le tableau avec un échantillon de la base de données
$enfants = tableau(); // Tableau pour faire correspondre les éléments enfants à leurs parents
foreach ($éléments en tant que $élément) (
if ($item["parent_id"]) $childrens[$item["id"]] = $item["parent_id"]; // Remplit le tableau
}
fonction printItem($item, $items, $childrens) (
/* Afficher l'élément de menu */
écho "
echo "".$item["titre"]."";
$ul = faux ; // Les enfants ont-ils été rendus ?
tandis que (vrai) (
/* Une boucle infinie où l'on recherche tous les enfants */
$key = array_search($item["id"], $childrens); // Recherche d'un élément enfant
si ($clé) (
/* Aucun enfant trouvé */
si ($ul) fait écho ""; // Si des éléments enfants étaient affichés, alors fermez la liste
casser; // Quitte la boucle
}
unset($enfants[$key]); // Supprime l'élément trouvé (afin qu'il ne soit plus affiché)
si ($ul) (
écho "
- "; // Démarre la liste interne s'il n'y a pas encore d'éléments enfants
$ul = vrai ; // Place le drapeau
}
echo printItem($items[$key], $items, $childrens); // Afficher récursivement tous les éléments enfants
}
écho "
}
?>
Ce code fonctionne parfaitement, cependant, vous devez comprendre que personne n'écrit de cette façon (en particulier, la sortie via écho Balises HTML). Et votre tâche est de prendre l'algorithme de ce code, mais pas le code lui-même. Et puis connectez cet algorithme à votre moteur. J'ai essayé de commenter soigneusement le code de sortie menu à plusieurs niveaux en PHP et MySQL, mais bien sûr, ce n’est pas le plus transparent et nécessite d’assez bonnes connaissances initiales. Si tu ne sais toujours pas bien PHP et MySQL, alors je recommande fortement de commencer par celui-ci
23 avril 2017Dans les leçons précédentes, nous avons examiné des exemples de ce que sont les tableaux. Dans ce tutoriel, nous utiliserons les tableaux en pratique pour créer un menu sur un site Web.
Pourquoi sont-elles plus pratiques que les balises HTML classiques ?
Eh bien, disons que notre site comporte 100 pages, chacune comportant le même menu. Et soudain, nous avons dû modifier les éléments du menu. En utilisant uniquement du HTML, nous devrons faire des modifications sur 100 pages du site, ce qui est beaucoup. PHP nous vient donc en aide dans de telles situations. Il suffira de modifier les éléments de menu une seule fois dans un fichier.
Maintenant, allons-y.
Sur l'hébergement local dans le dossier « domaines” créez un dossier appelé " tableau- menu. locale”.
Dans ce dossier nous créons quatre fichiers : indice. php, à propos. php, contact. php Et menu. php.
!!! La syntaxe du fichier doit êtrePHP.
Dans le fichier index.php, nous écrivons un framework HTML simple.
jeu de caractères="utf-8" >
maison
inclure("menu.php" );
?>
Copiez ce code dans les fichiers about.php et contact.php. Nous modifions uniquement les noms de pages dans la balise
.
Nous écrivons du code pour le menu.
Dans le fichier menu.phpécrire un tableau associatif.
$menu = tableau (
"indice "=> "index.php",
"à propos de" => "à propos.php",
"Contacts" => "contact.php"
);
?>
Ci-dessous, nous écrivons un menu en utilisant des balises HTML.
- href=" =$menu ["index" ]?>">Accueil
- href=" =$menu ["about" ]?>">À propos de nous
- href=" =$menu ["contacts" ]?>">Contacts
Dans le navigateur, nous verrons un menu régulier sous la forme d'une liste.
En cliquant sur n'importe quel élément de menu, nous accéderons à la page correspondante et le menu sera sur toutes les pages.
Maintenant, compliquons la tâche. Nous supprimons tout du fichier menu.php Et...
Nous écrivons un tableau multidimensionnel.
jeu de caractères="utf-8" >
$menu = tableau (
tableau("lien" => "Accueil", "href" => "index.php"),
tableau("lien" => "À propos de nous", "href"=> "about.php"),
tableau("lien" => "Contacts", "href"=> "contact.php")
);
?>
- href=" =$menu ["href"]?> "> =$menu ["link" ]?>
- href=" =$menu ["href" ]?> "> =$menu ["link" ]?>
- href=" =$menu ["href" ]?> "> =$menu ["link" ]?>
Et à la dernière étape...
Dessiner un menu à l'aide d'une boucle pour chaque.
Suppression de la liste du fichier menu.php
- et écrivez plutôt le code suivant.
- ($article) " ;
- notre liste contiendra un lien :
Notre prochaine tâche consiste à réinitialiser les styles de liste par défaut. Nous devons supprimer le remplissage externe et interne de la liste elle-même ainsi que les puces des éléments de la liste. Définissez ensuite la largeur souhaitée :
#navbar (marge : 0 ; remplissage : 0 ; type de style de liste : aucun ; largeur : 100 px ; )
Il est maintenant temps de styliser les liens eux-mêmes. Nous allons leur ajouter une couleur de fond, modifier les paramètres du texte : couleur, taille et épaisseur de la police, supprimer le soulignement, ajouter de petits retraits et redéfinir l'affichage. élément de l'inline au bloc. De plus, les cadres gauche et inférieur ont été ajoutés aux éléments de la liste.
La partie la plus importante de nos modifications est la redéfinition des éléments en ligne en éléments de blocage. Désormais, nos liens occupent tout l'espace disponible des éléments de la liste, c'est-à-dire que pour suivre le lien, nous n'avons plus besoin de passer le curseur exactement sur le texte.
#navbar a ( couleur d'arrière-plan : #949494 ; couleur : #fff ; remplissage : 5px ; décoration de texte : aucun ; poids de police : gras ; bordure gauche : 5px solide #33ADFF ; affichage : bloc ; ) #navbar li ( bordure gauche : 10 px solide #666 ; bordure inférieure : 1 px solide #666 ; )
Nous avons combiné tout le code décrit ci-dessus en un seul exemple, maintenant en cliquant sur le bouton essayer, vous pouvez accéder à la page d'exemple et voir le résultat :
Nom du document
Essayer "Lorsque vous passez la souris sur un élément de menu, son apparence peut changer, attirant l'attention de l'utilisateur. Vous pouvez créer un tel effet en utilisant la pseudo-classe:hover.
Revenons à l'exemple de menu vertical évoqué précédemment et ajoutons la règle suivante à la feuille de style :
#navbar a:hover ( couleur d'arrière-plan : #666 ; bordure gauche : 5px solide #3333FF ; ) Essayez »
Menu horizontal
Dans l’exemple précédent, nous avons examiné la barre de navigation verticale, que l’on retrouve le plus souvent sur les sites Web à gauche ou à droite de la zone de contenu principale. Cependant, les menus contenant des liens de navigation sont également souvent situés horizontalement en haut de la page Web.
Un menu horizontal peut être créé en stylisant une liste normale. Propriété d'affichage pour les éléments
- vous devez attribuer la valeur en ligne afin que les éléments de la liste soient situés les uns après les autres.
Pour placer les éléments de menu horizontalement, créez d'abord une liste à puces avec des liens :
Écrivons quelques règles pour notre liste qui réinitialisent le style par défaut utilisé pour les listes et redéfinissons les éléments de la liste de bloc à en ligne :
#navbar (marge : 0 ; padding : 0 ; list-style-type : aucun ; ) #navbar li ( affichage : en ligne ; ) Essayez »
Il ne nous reste plus qu'à définir le style de notre menu horizontal :
#navbar (marge : 0 ; remplissage : 0 ; type de style de liste : aucun ; bordure : 2px solide #0066FF ; rayon de bordure : 20px 5px ; largeur : 550px ; alignement du texte : centre ; couleur d'arrière-plan : #33ADFF ; ) #navbar a ( couleur : #fff ; remplissage : 5px 10px ; décoration de texte : aucun ; police-weight : gras ; affichage : bloc en ligne ; largeur : 100px ; ) #navbar a:hover ( border-radius : 20px 5px ; couleur d'arrière-plan : #0066FF; ) Essayez »
Menu déroulant
Le menu que nous allons créer comportera des liens de navigation principaux situés dans la barre de navigation horizontale et des sous-éléments qui n'apparaîtront que lorsque le curseur de la souris survolera l'élément de menu auquel ces sous-éléments se rapportent.
Nous devons d’abord créer la structure HTML de notre menu. Nous placerons les principaux liens de navigation dans une liste à puces :
Nous placerons les sous-éléments dans une liste séparée, en l'imbriquant dans l'élément
- , qui contient le lien parent concernant les sous-éléments. Nous avons désormais une structure claire pour notre future barre de navigation :
Commençons maintenant à écrire du code CSS. Tout d'abord, vous devez masquer la liste des sous-éléments à l'aide de la déclaration display: none; afin qu'ils ne soient pas affichés en permanence sur la page Web. Pour afficher les sous-éléments, nous en avons besoin au survol d'un élément
- la liste a été à nouveau convertie en élément de bloc :
#navbar ul ( display: none; ) #navbar li:hover ul ( display: block; )
Nous supprimons les retraits et les marqueurs par défaut des deux listes. Nous créons des éléments de liste avec des liens de navigation flottants, formant un menu horizontal, mais pour les éléments de liste contenant des sous-éléments, nous définissons float: none; afin qu'ils apparaissent les uns en dessous des autres.
#navbar, #navbar ul ( marge : 0 ; remplissage : 0 ; list-style-type : aucun ; ) #navbar li ( float : gauche ; ) #navbar ul li ( float : aucun ; )
Ensuite, nous devons nous assurer que notre sous-menu déroulant ne pousse pas le contenu situé sous la barre de navigation vers le bas. Pour ce faire, nous allons définir la position des éléments de la liste : relative ; , et une liste contenant les sous-éléments position: Absolute; et ajoutez une propriété top avec une valeur de 100% pour que le sous-menu positionné de manière absolue apparaisse exactement en dessous du lien.
#navbar ul ( affichage : aucun ; position : absolue ; haut : 100 % ; ) #navbar li ( float : gauche ; position : relative ; ) #navbar ( hauteur : 30px ; ) Essayez »
La hauteur de la liste parent a été ajoutée volontairement, puisque les navigateurs ne considèrent pas le contenu flottant comme un contenu d'élément, sans ajouter de hauteur, notre liste sera ignorée par le navigateur et le contenu suivant la liste s'enroulera autour de notre menu.
Il ne nous reste plus qu'à styliser nos deux listes et le menu déroulant sera prêt :
#navbar ul ( affichage : aucun ; couleur d'arrière-plan : #f90 ; position : absolue ; haut : 100 % ; ) #navbar li:hover ul ( affichage : bloc ; ) #navbar, #navbar ul ( marge : 0 ; remplissage : 0 ; type de style de liste : aucun ; ) #navbar (hauteur : 30 px ; couleur d'arrière-plan : #666 ; rembourrage-gauche : 25 px ; largeur minimale : 470 px ; ) #navbar li ( float : gauche ; position : relative ; hauteur : 100 % ; ) #navbar li a ( affichage : bloc ; remplissage : 6px ; largeur : 100px ; couleur : #fff ; décoration du texte : aucun ; alignement du texte : centre ; ) #navbar ul li ( float : aucun ; ) #navbar li:hover ( couleur d'arrière-plan : #f90; ) #navbar ul li:hover ( couleur d'arrière-plan : #666; )
Le menu d'un site en PHP, contrôlé par des scripts PHP, possède ses propres caractéristiques. Il ne s'agit pas seulement de liens absolus ou relatifs, bien que cela puisse très bien être le cas, mais, en règle générale, de blocs de liens générés dynamiquement dans des panneaux latéraux avec des sections et sous-sections et des blocs de liens à partir des pages internes du site elles-mêmes. Un menu généré dynamiquement est très pratique car il peut être inséré n’importe où sur le site et surtout au bon moment. Autrement dit, lorsque vous passez à différentes sections et sous-sections, vous pouvez développer dynamiquement différents blocs de menu. De plus, ils peuvent être différents non seulement par leur contenu, mais également par leur forme et leur conception. Dans un site statique, il est également tout à fait possible de réaliser de telles astuces, mais cela coûtera des fichiers modèles supplémentaires et bien d'autres astuces. Alors qu’un site écrit en PHP ne nécessite rien de tout cela. Le modèle restera tel quel. Tout sera contrôlé par un ou plusieurs scripts PHP simples.
Pour le vérifier, il suffit d'écrire un script PHP pour générer dynamiquement un menu, par exemple la première catégorie et de forcer à développer le menu de cette catégorie via un script préalablement écrit. Les titres restants peuvent être formés de la même manière. De plus, le code du script lui-même restera pratiquement inchangé. Seul le fichier texte changera, ce qui déterminera les noms des liens et les liens eux-mêmes. Le code d'un tel script est donné ci-dessous.
// Générateur de menus
$menu = @file($rubric1_menu);
$lignes = nombre($menu);
pour ($i = 0; $i< $lines; $i++)
{
list($menu_link,$menu_name,$menu_title)=explode("::", $menu[$i]);
if($page == rub1_part1 et $i == 0) ($refcolor = "style="color:#cc0000"";)
elseif($page == rub1_part2 et $i == 1) ($refcolor = "style="color:#cc0000"";)
elseif($page == rub1_part3 et $i == 2) ($refcolor = "style="color:#cc0000"";)
sinon ($refcolor = "" ;)
$rubrique1.=" - ".$nom_menu." ";
- IDENTIFIANT- identifiant
- Titre- Nom du menu
- Parent- Parent de catégorie par défaut 0
- ". $category["title"].""; if(isset($category["childs"]))( $menu .= "
- ". showCat($category["childs"]) ."
"; return $menu; ) /** * Lisez notre modèle de manière récursive **/ function showCat($data)( $string = ""; foreach($data as $item)( $string .= tplMenu($item); ) return $string; ) //Obtenir le balisage HTML $cat_menu = showCat($tree); //Afficher l'écho "
écho"
- "
;
pour chaque($menu comme$article)(
écho "
}
Dans le navigateur, nous verrons le même résultat.
Pour modifier les éléments de menu, modifiez-les simplement dans le fichier menu.php juste une fois.
Si votre site Web est plus qu'une simple page Web, vous devriez alors envisager d'ajouter une barre de navigation (menu). Le menu est une section d'un site Web conçue pour aider les visiteurs à naviguer sur le site. Tout menu est une liste de liens menant vers des pages internes du site. Le moyen le plus simple d'ajouter une barre de navigation à votre site est de créer un menu en utilisant CSS et HTML.
Menu vertical
La première étape de la création d'un menu vertical consiste à créer une liste à puces. Nous devrons également pouvoir identifier la liste, nous y ajouterons donc un attribut id avec l'identifiant "navbar". Chaque élément
}
?>
Pour qu'un tel script fonctionne, vous avez besoin d'un fichier texte dans lequel seront stockés les noms des liens de menu, les liens eux-mêmes et leur titre. Créer un tel fichier n'est pas difficile, exécutez simplement la commande Fichier -> Nouveau dans le menu principal du programme Dreamweaver, créez un nouveau document html, comme décrit précédemment, vérifiez et, si nécessaire, modifiez l'encodage du nouveau fichier en UTF. -8, puis enregistrez-le sous le nom rubrique1.dat dans le dossier de données précédemment créé à cet effet. Le chemin complet de ce fichier sera D:/Mysitephp/data/rubric1.dat. Le contenu du fichier ci-dessous sont les liens eux-mêmes, leurs noms et leur titre (astuces). De plus, pour mettre en œuvre ce script, il faut le connecter à l'aide de la fonction inclure() dans le moteur de modèles main.php.
Rub1_part1::Section 1::Section 1 rubrique 1 ::
rub1_part2::Section 2::Section 2 rubrique 1 ::
rub1_part3::Section 3::Section 3 rubrique 1 ::
De plus, vous devez également créer un petit script avec des paramètres qui stockeront l'adresse complète du site, les chemins d'accès aux dossiers de pages et les méta descriptions du site, les chemins d'accès aux fichiers du menu du site et le connecteront à l'aide de la fonction inclure() dans le moteur de modèles main.php. Pour ce faire, vous devez créer un nouveau fichier php et l'enregistrer sous un nom tel que settings.php dans le dossier php. Le chemin complet du fichier sera D:/Mysitephp/php/settings.php et son contenu est indiqué ci-dessous.
# dossier avec des documents HTML
$doctemplates = "modèles" ;
# chemin complet vers le répertoire du script
$turl="http://monsitephp.ru";
# base de données avec des données
$rubric1_menu = "data/rubric1.dat";
?>
Comment fonctionne le script PHP de création de menu ? D'abord dans la variable $menu en utilisant la fonction déposer() Le contenu du fichier texte rubrique1.dat est placé. Alors la fonction compter() compte le nombre de lignes dans un fichier texte et fonctions liste() Et exploser() le menu lui-même est développé dans une boucle, où la méthode de collage des lignes ensemble (opération point . ) des rangées de liens sont formées avec leurs noms et titres, qui sont ensuite placés dans la variable $rubric1. Vient ensuite le script du moteur de modèle, où le script de menu est connecté par la fonction inclure(), déplace le contenu de la variable $rubric1 vers l'emplacement souhaité sur le site à l'aide de la fonction décrite précédemment repl().
Un tel menu ne fonctionnera pas encore, puisqu'il ne contient que les liens eux-mêmes avec tous les attributs nécessaires, mais il n'existe pas de script qui assurerait le passage vers ces liens et l'ouverture des pages du site qui correspondront à ces liens. Nous traiterons ensuite de ce script PHP.
Ensuite, vous pouvez mettre à jour le projet avec le script de génération de menu. Vous pouvez également télécharger le projet mis à jour sur la page qui s'ouvrira après inscription et activation d'un abonnement gratuit dans le panneau de droite. L'adresse de la page doit être enregistrée. C'est sur cette page que des liens permettant de télécharger des mises à jour du projet, divers scripts, programmes, leçons et didacticiels vidéo utiles sur la conception de circuits, la programmation et la création de sites Web apparaîtront à l'avenir. pour les débutants.
Le projet de site php téléchargé mis à jour avec de nouveaux scripts peut désormais être comparé à ce qui s'est passé à la suite des étapes décrites ci-dessus. Ensuite, afin d'éliminer les divergences, il serait utile de remplacer complètement le projet par celui téléchargé, d'effectuer l'opération, de démarrer le serveur Denwer, de taper mysitephp.ru dans la fenêtre du navigateur et de voir ce qui en résulte. Le menu de la première section doit se développer dans la partie supérieure gauche du modèle, comme le montre l'image ci-dessous.
Allez vous fondre dans votre réseau social préféré
Aucun site Web n'est complet sans une navigation ou, comme on l'appelle aussi, un « menu du site ». Ainsi, le menu du site peut être à un ou plusieurs niveaux sous la forme d'une arborescence. S'il n'y a pas de difficultés particulières en termes de mise en œuvre avec un menu à un seul niveau, vous devez alors réfléchir attentivement lors de la création d'un menu à plusieurs niveaux.
La chose la plus importante dans cette tâche est de concevoir la base de données de notre menu à plusieurs niveaux. Créons une table Catégories avec trois champs identifiant, titre, parent Où:
Le champ est responsable du branchement du menu Parent Si Parent = 0, alors cette catégorie est la catégorie parent. Afin d'ajouter des descendants à la catégorie parent, vous devez préciser dans le champ parent IDENTIFIANT le bon parent. Par exemple:
Tableaux avec catégories
Comme le montre le tableau, la catégorie parent Voitures il y a deux descendants - c'est Mazda Et Honda lié par domaine Parent. Et la catégorie motocyclettes deux descendants sont Kawasaki Et Harley. En parallèle, la catégorie Bateaux n’a pas de descendance. J'espère que vous comprenez comment lier les catégories.
Ensuite, nous passons des mots à la pratique. Créons une table Catégories.
CREATE TABLE IF NOT EXISTS `categories` (`id` int(10) non signé NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `parent` int(10) non signé NOT NULL, PRIMARY KEY (`id`)) ENGINE=MonISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=20 ; -- -- Vidage des données de la table `categories` -- INSERT INTO `categories` (`id`, `title`, `parent`) VALEURS (1, "Voitures", 0), (2, "Motos", 0 ), (3, "Mazda", 1), (4, "Honda", 1), (5, "Kawasaki", 2), (6, "Harley", 2), (7, "Mazda 3", 3 ), (8, "Mazda 6", 3), (9, "Berline", 7), (10, "Hatchback", 7), (11, "Bateaux", 0), (12, "Liftback" , 8), (13, "Crossover", 8), (14, "Blanc", 13), (15, "Rouge", 13), (16, "Noir", 13), (17, "Vert" , 13), (18, "Mazda CX", 3), (19, "Mazda MX", 3);L'algorithme de travail comprend les éléments suivants :
Créer une connexion à la base de données
query("FIXER LES NOMS "utf8""); /* * Il s'agit de la manière "officielle" orientée objet de procéder * cependant $connect_error ne fonctionnait pas avant les versions PHP 5.2.9 et 5.3.0. */ if ($mysqli->connect_error) ( die("Connection error (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * Si vous devez être sûr de la compatibilité avec les versions avant 5.2 .9, * il est préférable d'utiliser ce code */ if (mysqli_connect_error()) ( die("Erreur de connexion (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); )Écrire une fonction pour obtenir des données de la table Catégories
//Récupère le tableau de notre menu à partir de la base de données sous forme de fonction de tableau getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Créer un tableau où la clé du tableau est l'ID du menu $cat = array(); while($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $ chat; )Nous obtenons un tableau comme celui-ci, où la clé du tableau est l'ID de catégorie.
Fonction de construction en bois massif de Tommy Lacroix
//Fonction pour construire un arbre à partir d'un tableau de Tommy Lacroix function getTree($dataset) ( $tree = array(); foreach ($dataset as $id => &$node) ( //S'il n'y a pas de pièces jointes if ( !$node[" parent"])( $tree[$id] = &$node; )else( //S'il y a des enfants, parcourez le tableau $dataset[$node["parent"]]["childs "][$id] = &$ node; ) ) return $tree; )On obtient un tableau sous la forme d'un arbre
Script entier
query("FIXER LES NOMS "utf8""); /* * Il s'agit de la manière "officielle" orientée objet de procéder * cependant $connect_error ne fonctionnait pas avant les versions PHP 5.2.9 et 5.3.0. */ if ($mysqli->connect_error) ( die("Connection error (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * Si vous devez être sûr de la compatibilité avec les versions avant 5.2 .9, * il est préférable d'utiliser ce code */ if (mysqli_connect_error()) ( die("Connection error (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); ) //Récupérer le tableau de notre menu à partir de la base de données sous forme de fonction de tableau getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Créer un tableau où la clé du tableau est l'ID du menu $cat = array(); while ($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $cat; ) //Fonction pour construire un arbre à partir d'un tableau à partir de la fonction Tommy Lacroix getTree($dataset) ( $tree = array(); foreach ($dataset as $id => &$node) ( // S'il n'y a pas de pièces jointes if (!$node[ "parent"])( $tree[$id] = &$node; )else( //S'il y a des descendants, alors parcourez le tableau $dataset[$node["parent"]]["childs"][$ id] = &$node; ) ) return $tree; ) //Obtenir un tableau préparé avec des données $cat = getCat($mysqli); //Créer un menu arborescent $tree = getTree($cat); //Modèle d'affichage d'un menu sous forme d'arborescence fonction tplMenu($category)( $menu = "- ".$cat_menu."
Résultat du travail
Menu à plusieurs niveaux en PHP + MySQL pour le panneau d'administration
Si vous souhaitez utiliser ce menu dans le panneau d'administration de votre site, vous devez alors réécrire quelques fonctions tplMenu(), showCat().
".$catégorie["titre"].""; )else( $menu = " "; ) if(isset($category["childs"]))( $i = 1; pour($j = 0; $j< $i; $j++){ $str .= "→"; } $i++; $menu .= showCat($category["childs"], $str); } return $menu; } /** * Рекурсивно считываем наш шаблон **/ function showCat($data, $str){ $string = ""; $str = $str; foreach($data as $item){ $string .= tplMenu($item, $str); } return $string; } //Получаем HTML разметку $cat_menu = showCat($tree, ""); //Выводим на экран echo ""; ?>