12. juli 2004 - 15:36Der er
14 kommentarer og 1 løsning
Hierakisk menu i PHP og MySQL
Jeg har i en mysqldb lavet følgende fields: ID Parent Tekst
Hvor parent henviser til den entry der er parent for dette menupunkt. F.eks.: Mad (ID: 1, Parent: NULL, Tekst: Mad) Varm (ID: 2, Parent: 1, Tekst: Varm) Stærk (ID: 3, Parent: 2, Tekst: Stærk) Kold (ID: 4, Parent: 1, Tekst: Kold) Drikke (ID: 5, Parent: NULL, Tekst: Drikke) Vin (ID: 6, Parent: 5, Tekst: Vin) Spiritus (ID: 7, Parent: 5, Tekst: Spiritus) osv.
Min idé er, at trække alle disse informationer ud med en alm. SELECT * FROM database, og behandle parent/child forholdet mellem disse, meget gerne med en rekursiv funktion, så man kan lave uendelig mange childs og parents. I eksemplet bliver strukturen: .Mad .+ Varm .++ Stærk .+ Kold .Drikke .+ Vin .+ Spiritus
Hov, havde lige glemt det med alfabetisk rækkefølge:
<?
//connect
$q = mysql_query("SELECT * FROM menu WHERE parent IS NULL ORDER BY tekst ASC") or die(mysql_error()); while($row = mysql_fetch_array($q)) { if(!isset($_GET['parent']) || $_GET['parent'] != $row['id']) { echo "<a href='".$_SERVER['PHP_SELF']."?parent=".$row['id']."'>+ " . $row['tekst'] . "</a><br>"; } elseif(isset($_GET['parent']) && $_GET['parent'] == $row['id']) { $q1 = mysql_query("SELECT * FROM menu WHERE parent = '".$_GET['parent']."' ORDER BY tekst ASC") or die (mysql_error()); echo "<a href='".$_SERVER['PHP_SELF']."'>- " . $row['tekst'] . "</a><br>"; while($data = mysql_fetch_array($q1)) { echo " " . $data['tekst'] . "<br>"; } } } ?>
Hvordan ville koden skulle udformes hvis det skulle bruges til en <select> boks istedet?
Synes godt om
Slettet bruger
28. november 2004 - 19:35#15
En <select> kan da ikke indeholde et egentligt hierarki?
Det nærmeste man kan komme, er med nogle <optgroup label='overskrift'>.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.