munkmill
30-03-2004, 21:20
Hallo an alle,
ich habe ein Skript geschrieben, welches alle Einträge eines per $_GET übergebenen Verzeichnisses in ein Array liest und Unterverzeichnisse als Links ausgibt. Diese kann man dann wieder anklicken und das Skript wird rekursiv erneut aufgerufen, listet dann also das Unterverzeichnis auf.
Soweit, so gut. Das Problem ist die "Zurück"-Funktion. Es soll einen Link geben, der in jedem Unterverzeichnis wieder in die nächsthöhere Ebene führt.
Nun habe ich jedem Verzeichnis per $_GET seinen Vorgänger mitgegeben. Allerdings weiss ich nicht, wie ich den Zurück-Link definieren soll, da der ja zum einen das Skript mit dem Vorgänger erneut aufruft, aber auch dessen Vorgänger benötigt (für mehrmals Zurück).
Vielleicht hat ja einer ne Idee?!?! Vielen Dank für jede Hilfe, Jan
<?php
// $cur_path = Aktueller Pfad
// $go_path = Pfad, zu dem gesprungen wird (vorwaerts)
// $ret_path = Pfad, der Vorgaenger ist
// Basispfad
define ("BASE_PATH", $_GET['base_path']);
// Liest alle Eintraege des uebergebenen Pfades in ein Array,
// gibt dieses zurueck
function fillarray($path)
{
$entry_array = array();
if (is_dir($path))
{
$handle = @opendir($path);
while (($part = @readdir($handle)) == true)
{
clearstatcache();
if ($part != "." && $part != "..")
{
$entry_array[] = $part;
} // if
} // while
if ($handle == true)
{
closedir($handle);
} // if
natsort ($entry_array);
return $entry_array;
} // if ..
else
{
return false;
} // .. else
} // fillarray($path)
// Zeigt alle Eintraege im Array an, rekursiver Aufruf bei Unterverzeichnissen
function showentries()
{
// Pfad gesetzt => uebergeben
if (isset($_GET['go_path']))
{
$cur_path = $_GET['go_path'];
}
else
{
$cur_path = "";
}
// Array fuer Verzeichnis-Eintraege
$entry_array = fillarray(BASE_PATH."/".$cur_path);
// Zurueck-Pfad
$ret_path = $_GET['ret_path'];
// Uebergebener Pfad leer => Basis-Pfad
if ($cur_path == "")
{
echo "<a href=\"t.htm\">Home<br /> <br /></a>";
}
// Sonst => Zurueck-Link anzeigen
else
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?base_path=".BASE_PATH."&go_path=".$ret_path."&ret_path=\">Zurueck</a><br /> <br />";
}
// Jeden Eintrag anzeigen
foreach ($entry_array as $entry)
{
// Dateien
if (is_file(BASE_PATH."/".$cur_path."/".$entry))
{
echo $entry;
echo "<br />";
}
// Unterverzeichnisse => rekursiver Aufruf
elseif (is_dir(BASE_PATH."/".$cur_path."/".$entry))
{
$go_path = $cur_path."/".$entry;
echo "<a href=\"".$_SERVER['PHP_SELF']."?base_path=".BASE_PATH."&go_path=".$go_path."&ret_path=".$cur_path."\">
$entry<br />
</a>
";
}
} // foreach
} // showentries()
// Hauptfunktion aufrufen
showentries();
?>
ich habe ein Skript geschrieben, welches alle Einträge eines per $_GET übergebenen Verzeichnisses in ein Array liest und Unterverzeichnisse als Links ausgibt. Diese kann man dann wieder anklicken und das Skript wird rekursiv erneut aufgerufen, listet dann also das Unterverzeichnis auf.
Soweit, so gut. Das Problem ist die "Zurück"-Funktion. Es soll einen Link geben, der in jedem Unterverzeichnis wieder in die nächsthöhere Ebene führt.
Nun habe ich jedem Verzeichnis per $_GET seinen Vorgänger mitgegeben. Allerdings weiss ich nicht, wie ich den Zurück-Link definieren soll, da der ja zum einen das Skript mit dem Vorgänger erneut aufruft, aber auch dessen Vorgänger benötigt (für mehrmals Zurück).
Vielleicht hat ja einer ne Idee?!?! Vielen Dank für jede Hilfe, Jan
<?php
// $cur_path = Aktueller Pfad
// $go_path = Pfad, zu dem gesprungen wird (vorwaerts)
// $ret_path = Pfad, der Vorgaenger ist
// Basispfad
define ("BASE_PATH", $_GET['base_path']);
// Liest alle Eintraege des uebergebenen Pfades in ein Array,
// gibt dieses zurueck
function fillarray($path)
{
$entry_array = array();
if (is_dir($path))
{
$handle = @opendir($path);
while (($part = @readdir($handle)) == true)
{
clearstatcache();
if ($part != "." && $part != "..")
{
$entry_array[] = $part;
} // if
} // while
if ($handle == true)
{
closedir($handle);
} // if
natsort ($entry_array);
return $entry_array;
} // if ..
else
{
return false;
} // .. else
} // fillarray($path)
// Zeigt alle Eintraege im Array an, rekursiver Aufruf bei Unterverzeichnissen
function showentries()
{
// Pfad gesetzt => uebergeben
if (isset($_GET['go_path']))
{
$cur_path = $_GET['go_path'];
}
else
{
$cur_path = "";
}
// Array fuer Verzeichnis-Eintraege
$entry_array = fillarray(BASE_PATH."/".$cur_path);
// Zurueck-Pfad
$ret_path = $_GET['ret_path'];
// Uebergebener Pfad leer => Basis-Pfad
if ($cur_path == "")
{
echo "<a href=\"t.htm\">Home<br /> <br /></a>";
}
// Sonst => Zurueck-Link anzeigen
else
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?base_path=".BASE_PATH."&go_path=".$ret_path."&ret_path=\">Zurueck</a><br /> <br />";
}
// Jeden Eintrag anzeigen
foreach ($entry_array as $entry)
{
// Dateien
if (is_file(BASE_PATH."/".$cur_path."/".$entry))
{
echo $entry;
echo "<br />";
}
// Unterverzeichnisse => rekursiver Aufruf
elseif (is_dir(BASE_PATH."/".$cur_path."/".$entry))
{
$go_path = $cur_path."/".$entry;
echo "<a href=\"".$_SERVER['PHP_SELF']."?base_path=".BASE_PATH."&go_path=".$go_path."&ret_path=".$cur_path."\">
$entry<br />
</a>
";
}
} // foreach
} // showentries()
// Hauptfunktion aufrufen
showentries();
?>