§2. Comment créer un menu déroulant vertical en php. Menu multi-niveaux en PHP et MySQL Création d'un menu multi-niveaux en PHP

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 "