Comment faire pour créer un menu d'arbre avec PHP et MySQL

Un menu d'arbre est une représentation visuelle d'une liste d'éléments, organisée de telle sorte que certains articles ou catégories, appelées nœuds parents, peuvent être étendus et montrent des sous-éléments, appelés nœuds enfants. Utilisation de PHP, vous pouvez extraire des informations à partir d'une base de données MySQL et de construire un arbre de menu sur une page Web. Votre table MySQL doit avoir un format spécifique, qui identifie noeuds parents et enfants et la relation entre eux. Chaque enregistrement de la table représente un noeud sur l'arbre. Vous pouvez créer plusieurs niveaux de nœuds enfants.

Instructions

1 Connectez-vous à votre base de données MySQL. Créer une table avec trois champs: l'ID de nœud, le texte pour le nœud et l'ID de parent pour le noeud. Insérer des informations dans la table. Chaque ID de nœud doit être unique. Les nœuds au niveau supérieur ont zéro pour un noeud parent ID, alors que les nœuds enfants ont un ID parent qui correspond au champ d'identification pour les parents respectifs.

2 Ouvrez un fichier HTML dans lequel vous voulez créer un menu arborescent. Placez le curseur où vous voulez faire l'arbre. Tapez le code suivant:

<? Php
$ Db = mysql_connect ($ hostname, $ username, $ password);
mysql_select_db ($ base de données);

Ces lignes simplement mis en place la connexion à votre base de données MySQL. Modifiez les variables PHP à celles qui sont applicables à votre base de données.

3 Tapez le code suivant:

$ Result = mysql_query ( "SELECT * FROM nom_table") ou mourir (mysql_error ());

Cette ligne fait un appel à la base de données MySQL et obtient les informations de la table qui contient les informations de menu de l'arborescence et l'enregistre dans une variable PHP.

4 Tapez le code suivant:

$ Menu = Array ();
while ($ m = mysql_fetch_array ($ result)) {
$ menu [] = Array ( 'id' => $ m [ 'id'], 'text' => $ m [ 'text'], 'parent' => $ m [ 'parent']);
}

La première ligne crée une variable PHP et initialise comme un tableau. Les "tout en" cycles de boucle à travers chacun des enregistrements dans le "$ result" variable et les formats pour une utilisation par une fonction PHP.

5 Tapez le code suivant:

fonction treemenu ($ rows, $ parent = 0) {
$ Result = "<ul>";
foreach ($ lignes que $ row) {

La première ligne crée une nouvelle fonction appelée "treemenu" que vous allez utiliser pour construire votre arbre. Il prend un ou deux paramètres. Tout d'abord, il prend l'information à partir d'un tableau PHP. Le second est un entier qui contient des informations sur les nœuds parents dans l'arborescence. Si vous ne passez pas un second paramètre, il crée sa propre variable et initialise sa valeur à zéro.

6 Tapez le code suivant:

if ($ row [ 'parent'] == $ parent) {
. $ Result = "<li> {$ row [texte]}";
foreach ($ row que $ r) {
if ($ r [ 'parent'] == $ r [ 'id'])
$ enfants = true;
autre
$ enfants = false;
}
if ($ enfants = true)
$ Result. = Treemenu ($ lignes, $ row [ 'id']). "</ Li>";
}

Ces lignes d'utilisation de code "if" et boucles pour faire défiler les informations dans la variable PHP qui contient la structure de menu arborescent. Si la ligne est un parent ayant une valeur d'ID de zéro, la fonction crée un nœud parent. Si la ligne est un enfant, il obtient l'ID du nœud parent et crée un nœud enfant lié à son parent. Il appelle la fonction "treemenu" récursive pour vérifier chaque ligne de la variable de tableau PHP.

7 Tapez le code suivant:

}
. $ Result = "</ ul>";
return $ résultat;
}

Ces lignes ferment la boucle "for" qui parcourt chaque ligne dans les résultats MySQL, ajoutent un peu de code HTML et le retour de l'arbre de la fonction. La dernière ligne ferme la "treemenu" bloc fonctionnel.

8 Tapez le code suivant:

echo treemenu ($ menu);
?>

La première ligne appelle la fonction "treemenu" et transmet les informations de la base de données MySQL à elle. Il imprime ensuite l'arbre sur la page Web. La deuxième ligne ferme le bloc de code PHP.

Conseils et avertissements

  • Ajouter plus de champs à votre table MySQL au besoin. Par exemple, vous pouvez ajouter un autre champ de texte qui contient des hyperliens pour chaque nœud.