daten aus einer mysql tabelle nach ganz bestimmter art auslesen

Huhu :)

Habe da ein Problem bei dem ich selber nicht weiter komme, vielleicht könnt Ihr mir helfen.
Ich hab etwa folgende Tabelle:

Code:
Id	eltern_id	Name
1	0	Foo
2	1	Bar
3	2	Bli
4	1	Bla
5	4	Blub
6	4	Plop
7	4	Sob
8	3	Hap
9	3	Hup
10	7	Hop

Später soll mal auf meiner Homepage stehen:
Foo
--Bar
----Bli
------Hap
------Hup
--Bla
----Blubb
----Plop
----Sob
------Hop

ich hab das vorgehen mal versucht in worte zu fassen:
Das erste Element "Foo" ist sozusagen das Wurzelelement, dieses hat die id 1. Dann soll das erste untergeordnete Element gesucht werden und hingehängt werden. Dies ist "Bar" denn seine elternelement ist das mit der id 1. jetzt werden die kinder von diesem element gesucht und aufgelistet und so weiter. erst wenn kein kind mehr zu einem element gibt, wird das nächste kind des übergeordneten elements hingeschrieben.


ich hoffe mal das Euch klar geworden ist was ich will, wenn nicht, nochmal nachfragen 8o
Wie realisiere ich das?
Ich hab mir ne Variante ausgedacht, aber da bräuchte ich ganz viele mysql Abfragen, allerdings wollte ich nen schnellen code mit wenig mysql abfragen.
 
hier mal ne lösung mit einem mysql statement und ner rekusriven php funktion um den baum darzustellen.
ich hoffe mal dass das ungefähr so hinhaut wie ich das jetzt geschrieben habe:

PHP:
$menu = mysql_query("SELECT * FROM menuTabelle");

function zeigeBaum(int elternID, int level) {
	foreach($menu as $menupunkt) {
		// aktuellen Menupunkt ausgeben
		if( $menupunkt[eltern_id] == elternID ) {
			for(int i=0; i<level; i++)
				echo "--";
			echo "$menupunkt[Name] </br>";

			// falls vorhanden Untermenupunkte ausgeben
			foreach($menu as $untermenupunkt) {
				if($menupunkt[Id] == $untermenupunkt[eltern_id])
					zeigeBaum($menupunkt[Id], level++);
			}
		}			
	}
} 

zeigeBaum(0, 0);
 
So mache ich das immer:
PHP:
function rekursion($id)
{
          $query = mysql_query("SELECT * FROM `table` WHERE eltern_id='".$id."';");
          while($kategorien = mysql_fetch_array($query))
          {
                  //Deine Ausgabe verarbeitung!!
                 rekursion($kategorien[Id]);
          }
}

Um das ganze jetzt noch einzurücken brauchst Du nur einen weitern Parametern an die Funktion zu übergeben und noch eine nette String-Funktion von PHP einbauen welche Dir das ganze einrückt. Falls Du willst kann ich Dir gerne mal meine Klasse geben, die ich programmiert habe.
Schau einfach hier das Menü links wird Rekursiv aufgebaut! Ist aber noch eine alte Version von mir bei der Neuen kann man angeben welche Kategorien von anfang an schon geöffnet sein sollen.
 
Auf jeden fall schon mal danke für die Hinweise.
Das Tutorial beschreibt genau das was ich brauche und hilft mir die nötigen Gedankengänge nachzuvollziehen. Ich werde mich da mal durcharbeiten und mich nochmals Melden, falls ich noch fragen habe.
Da die mysql tabelle bisher nur 20 Einträge hat, kann ich sie noch problemlos umbauen, soweit es nötig ist.

Ich habe mir vorgestellt damit ein Menuesystem zu bauen, dass einen Katalog von Themen darstellt. Allerdings will ich irgentwelches javascript/dynamisches html vermeiden, da manche leute das ja abschalten in ihrem Browser.

Ich rechne mit 5 neuen Einträgen pro Tag, wenn mein Projekt am laufen ist.

Nächtliche Grüße, Hendrik
 
Zurück
Oben