Hallo,

Hab zu was ähnlichem gepostet, aber jetzt hab ich was andres gecodet:

folgende Beschreibung zu meinem Script, was nicht so läuft wie es soll:

Ich hab ne Tabell. Eine Spalte directory. Dort sind Verzeichnispfade
gespeichert.

Also z.B. about-us/ wäre der Hauptpfad

about-us/profile/ der Unterpfad von about-us/

und about-us/profile/our-profile/ wäre der Unterpfad von about-us/profile/


Nun soll das Script diese Hierarchie erkennen und ausgeben. Hauptpfad links
und die
untergeordneten Pfade eingerückt und die Pfade die den untergeordneten
untergeordnet sind
wieder eingerückt.

Also für das Bsp:

about-us/

about-us/profile/

about-us/profile/our-profile/


Das Script soll automatisch erkennen welche Pfade welcher Root zugeordnet
sind und so weiter,
soweit die Verschachtelung halt angegeben ist.

Wenn ich dann ein paar andere Zeilen eintrage und dann irgendwann ma wieder
was mit z.B.
about-us/profile/our-profile/test/

Dann soll dieses Verzeichnis immer noch korrekt als Unterordner von
about-us/profile/our-profile/
erkannt werden.

Ich hab folgendes jetzt schon da:

Macht jetzt zwar solche schönen Ausgaben:


about-us
endtest
level2
profile

hardware
controler
controler
mäuse

service
basis
erweiterter

Aber sobald mehr als 3Einträge hinzukommen bzw. das Untermenü nochmal ein Untermenü hat, wirds kritisch.

Wer könnte sich das mal durchschaun. Das wäre mir sehr wichtig.


<?php

function leerzeichen($anzahl)

{

for ($h=0; $h<=$anzahl;$h++)

echo " ";

} // ende function leerzeichen



include("connect_database.php"); // Bindet Script ein, um DB zu öffnen



function wieviel_datensätze($tabelle,$con) // Gibt die Anzahl der Datensätze (ds)
// in der DB zurück
{

$i=0;
$query="SELECT id FROM $tabelle";
$sql=mysql_query($query,$con);
while($entry=mysql_fetch_array($sql,MYSQL_ASSOC))

{

$i++;

}

return $i; // Rückgabewert

}



function gib_directory_zurueck($tabelle,$con) // Gibt Inhalte der Spalte directory zurück

{

$query="SELECT directory FROM $tabelle ORDER BY directory";
$sql=mysql_query($query,$con);

while($entry=mysql_fetch_row($sql)) // Solange ein Ergebnis der Abfrage zurückkommt,
// solange wird die Schleife durchlaufen

{

$result[]=$entry[0]; // Bildet Array result

}

return $result; // Gibt das Ergebnisarray zurück

}


$ds=wieviel_datensätze("structure",$connect); // Ruft Funktion auf mit den Parametern
// Tabellenname (structure) und $connect


$dr=gib_directory_zurueck("structure",$connect); // Wie Funktion wieviel_datensätze







for ($xy=0; $xy<$ds; $xy++) // Schleife von 0 bis < Wert $ds, wird beim Durchlauf
// incrementiert

{

$verzeichnis = split("/",$dr[$xy]); // Teilt eine Zeichenkette bei jedem Vorkomniss von

// "/" und fügt sie in ein Array.



if ($hilf != $verzeichnis[0])
{
$i++;
}




$anzahl = count($verzeichnis)-2;

$testarray[$i][] = $verzeichnis[$anzahl];

$hilf = $verzeichnis[0];

} // for schleife -ende-


for ($i=1; $i<=count($testarray); $i++)
{

for ($j=0; $j<=count($testarray[$i]);$j++)
{

echo "<br>";


if($testarray[$i]) leerzeichen(1);
if(!$testarray[$j]=="") leerzeichen(2);



echo $testarray[$i][$j];



}



}


mysql_close($connect);

?>