Come creare un menù ad albero con PHP e MySQL

April 28

Un menu ad albero è una rappresentazione visiva di un elenco di elementi, organizzati in modo che alcune voci o categorie, chiamati nodi principali, possono essere espansi e mostrano elementi secondari, chiamati nodi figli. Utilizzando PHP, è possibile estrarre informazioni da un database MySQL e costruire un menu ad albero in una pagina Web. La vostra tabella MySQL deve avere un formato specifico, quello che identifica padre e figlio nodi e il rapporto tra loro. Ogni record della tabella rappresenta un nodo sull'albero. È possibile creare diversi livelli di nodi figlio.

istruzione

1 Accedi al tuo database MySQL. Creare una tabella con tre campi: l'ID di nodo, il testo per il nodo e l'ID genitore del nodo. Inserire le informazioni nella tabella. Ogni ID di nodo deve essere univoco. I nodi al livello superiore hanno zero per un genitore nodo ID, mentre i nodi figli hanno un ID genitore che corrisponde al campo ID per quei rispettivi genitori.

2 Aprire un file HTML in cui si desidera creare un menù ad albero. Inserire il cursore in cui si desidera fare l'albero. Digitare il seguente codice:

<? Php
$ Db = mysql_connect ($ hostname, $ username, $ password);
mysql_select_db ($ database);

Queste linee semplicemente impostare la connessione al database MySQL. Modificare le variabili PHP a quelle applicabili al database.

3 Digitare il seguente codice:

$ Risultato = mysql_query ( "SELECT * FROM table_name") or die (mysql_error ());

Questa linea effettua una chiamata al database MySQL e ottiene le informazioni dalla tabella che contiene le informazioni menu ad albero e lo salva in una variabile PHP.

4 Digitare il seguente codice:

$ Menù = array ();
while ($ m = mysql_fetch_array ($ result)) {
$ Menu [] = array ( 'id' => $ m [ 'id'], 'text' => [ 'testo'] $ m, 'genitore' => $ m [ 'genitore']);
}

La prima riga crea una variabile PHP e lo inizializza come un array. I ", mentre" cicli di loop attraverso ciascuno dei record nel "risultato $" variabile e formati per l'utilizzo da parte di una funzione PHP.

5 Digitare il seguente codice:

Funzione TreeMenu ($ file, $ genitore = 0) {
$ Risultato = "<ul>";
foreach ($ righe come $ row) {

La prima riga crea una nuova funzione denominata "TreeMenu" che verrà utilizzato per costruire il vostro albero. Si impiegano uno o due parametri. In primo luogo, essa prende le informazioni da un array PHP. Il secondo è un numero intero che contiene informazioni su nodi principali nella struttura. Se non si passa un secondo parametro, si crea la propria variabile e inizializza il suo valore a zero.

6 Digitare il seguente codice:

if ($ row [ 'genitore'] == $ genitore) {
. $ Risultato = "<li> {$ row [testo]}";
foreach ($ row da $ r) {
if ($ [ 'genitore'] R == $ r [ 'id'])
$ bambini = true;
altro
$ bambini = false;
}
if ($ bambini = true)
$ Risultato. = TreeMenu ($ righe, $ row [ 'id']). "</ Li>";
}

Queste linee di utilizzare il codice "if" e loop per scorrere le informazioni nella variabile PHP che contiene la struttura di menu ad albero. Se la riga è un genitore con un valore ID zero, la funzione crea un nodo padre. Se la riga è un bambino, si ottiene l'ID del nodo padre e crea un nodo figlio legata al suo genitore. Si chiama la funzione "TreeMenu" in modo ricorsivo per controllare ogni riga nella variabile array PHP.

7 Digitare il seguente codice:

}
. $ Risultato = "</ ul>";
return $ risultato;
}

Queste linee chiudere il ciclo "for" che cicli attraverso ogni riga nei risultati di MySQL, aggiungono un po 'di codice HTML e ritornano l'albero dalla funzione. L'ultima riga chiude il blocco funzionale "TreeMenu".

8 Digitare il seguente codice:

echo TreeMenu ($ menu);
?>

La prima riga chiama la funzione "TreeMenu" e passa le informazioni dal database MySQL ad esso. E 'quindi stampa l'albero nella pagina Web. La seconda linea chiude il blocco di codice PHP.

Consigli e avvertenze

  • Aggiungere altri campi al tavolo di MySQL, se necessario. Ad esempio, è possibile aggiungere un altro campo di testo che contiene i collegamenti ipertestuali per ogni nodo.