Baumstruktur Menü

dantan

Grünschnabel
Hab schon gesucht, hier und auch im Netz - aber den richtigen Gedankenanstoss noch nicht gefunden.

Ziel: dynamischen Menü.

Eigentlich will ich es so in einer Tabelle speichern (als Array):

1,2,8
1,3,11
2,1,8

usw - jede Zahl steht dabei für einen Unterpunkt - die erste ist ein Oberpunkt.
Ein Unterpunkt kann auch öfters vorkommen oder auch ein Oberpunkt sein.
Jede Mögliche Verzweigung soll eine Zeile sein.
Die dann auslesen und mittels Schleifen und Abfragen entsprechend filtern - nur wie.

Dann noch eine Tabelle wo drin steht welcher Link jeder Punkt hat.

Ohne Datenbank, nur fürs Verständniss also so:

PHP:
$link = array();
$link[] = array(1,2);
$link[] = array(1,3,11);
$link[] = array(1,3,8);
$link[] = array(1,4,5);
$link[] = array(5,8);
$link[] = array(5,9);
$link[] = array(6,10);
$link[] = array(6,3);
$link[] = array(5,8,2);
$link[] = array(6,8,2);


$site1 = "impressum.php";
$site2 = "kontakt.php";

Hab auch was von Nested Sets gefunden, aber das hat ja Nachteile beim ändern - und auch immer nur ein left-parent und ein right-parent.

Vielleicht könnt Ihr mir ja auf die Sprünge helfen.
 
Geholfen haben alle Antworten bis jetzt - aber letztendlich war es noch nicht das was ich möchte.
Der Reitinger Link war schon fasst dran - aber ich wills anders machen - nämlich zwei Tabellen.

Jeder vorhandene Link hat eine url - die werden in der Tabelle Sites gespeichert.

In der Strukturtabelle soll wirklich nur stehen:

array$i(x,y,z...)
array$i++(d,w,z,y)

Dann halt einmal ein Select * aus der DB und alles in das Array schreiben und dann Auswerten -
Hätte ich eine SQL Tabelle im Stil von
gen1 gen2 gen3 gen4
x y z -
d w z y

würde ich besimmt mit der ersten Generation anfangen mit Select distinct(gen1)....
dann hätte ich alle ersten Menüpunkte...

Lieber Array abspeichern um nicht für jede neue Generation eine Spalte haben zu müssen. - Nur wie dann das Array weitervereiten? Müsste eine Kombination aus for, foreach, while und so sachen wie array_diff sein.

Das ganze könnte man nicht nur für ein Menü verwenden.
Auf Seiten wie lokalisten.de, Orkut oder OpenBC müsste es doch bei den Profilen ähnlich sein - Du kennst einen, der kennt den und der wiederum den - und über diese Ecken kennst dann den.
Vielleicht versteht ja jemand was ich meine.
 
Vielleicht ist das ja ein Ansatz - für die erste Generation:

PHP:
<?php

$nav[] = array(7,1,3,4);
$nav[] = array(3,2,6,3);
$nav[] = array(4,2,6,3);
$nav[] = array(4,2,6);
$nav[] = array(5,2,6,3);

for($i=0;$i<count($nav);$i++){
	$result[] = $nav[$i][0];
	}

$nav = array_unique($result);

echo "<pre>";
print_r($nav);
echo "</pre>";

?>

jetzt noch die 2.te bzw die x. Generation

Ideen?
 
Also bis auf die Lösung die ich kenne, fällt mir keine Möglichkeit ein, in unendliche Tiefe zu gehen - denn irgendwie müssen die ja einen Bezug zueinander haben.
 
Zurück