Navigationsmenü automatisch durch Verzeichnis-auslesen generieren - geht das?

Hektik

Erfahrenes Mitglied
Hallo erstmal! :)

Ich habe vor kurzem angefangen, auf php umzusteigen und bin fleißig am lernen. Nun kam mir heute ein Gedanke:

Ich binde derzeit in meiner Navigation eine menue.php per include in meine Seite ein, in der ich dann per html die links definiere. Das sieht dann so aus:
HTML:
<a href="index.php">Home</a><br>
<a href="index.php?section=kontakt">Kontakt</a><br>
<a href="index.php?section=gaestebuch">Gästebuch</a><br>
Diese lese ich dann per GET-Befehl aus dem section-Array aus und lasse die entsprechende Seite in meinen Inhaltsbereich includen.

Irgendwo habe ich jetzt aufgeschnappt, dass es möglich ist, ein Verzeichnis auszulesen, die extensions wegzulassen und die reinen Dateinamen in ein Array zu speichern.

Jetzt meine Frage:
Wie ist es mir möglich, ein verzeichnis auszulesen, dessen Werte in ein Array zu speichern und das ganze dann so oder so ähnlich in der menue.php einzufügen, dass sich das Menü automatisch den vorhandenen Seiten anpasst?
Also, die Seite geht hin, schaut nach, welche Dateien in einem von mir bestimmten Verzeichnis liegen und generiert daraus mein Navigations-Menü.

Ich kann mir vorstellen, dass das geht, weiß nur nicht wie oder wo ich da anfangen soll.

Ich hoffe, dass ich meinen Gedankengang einigermaßen verständlich beschrieben habe und dass jemand von euch ein Herz hat, mir da auf die Sprünge zu helfen!

Danke schonmal für das lesen des Posts :)

Grüße, die Hektik

Nachtrag:
Ich hab auch schon im Netz etwas gefunden, dass dem (zumindest laut Beschreibung) sehr nahe kommt, aber zum einen verstehe ich das nicht und zum anderen ist es leider das einzige, das ich gefunden habe :(
Hier der Code:

Description:

This code dynamically lists the (video) files in a directory, loads them into an array, sorts them by name (without the extension), and then displays them with a thumbnail link to the actual (video) file. It also displays the size of the files in kb.

I wrote this after giving up on the other array and sort code that I'd seen. None of them seemed to do all of this at once.

Note that the .jpg thumbnails that link to the movies all have the same prefix name (the substring is identical). This allows the link to work. A simple text link would have done the same thing.
PHP:
<?
        //get files in the current directory
        $handle=opendir('.');
        while ($file = readdir($handle)) {
                if (substr($file, -3) == "avi" | substr($file, -3) ==
"mpg" | substr($file, -3) == "mov" | substr($file, -3) == "asf") {
                        $files[] = array(name => $file, size =>
intval(filesize($file)/1024));
                }

        }
        closedir($handle);
        sort($files);

        //begin the html page and table
        echo "<html>\n<head>\n<meta http-equiv=\"content-type\"
content=\"text/html; charset=windows-1252\">\n<title>Files</title>\n<body
bgcolor=\"#ffffff\">\n<b><font face=\"arial, helvetica,
geneva\">Files:</font></b><br><br>\n";
        echo "<table bordercolor=\"#000000\" border=\"1\"
cellspacing=\"0\" cellpadding=\"0\">\n\t<tr>\n\t\t<td
align=\"center\"><font size=\"2\" face=\"arial, helvetica,
geneva\"><b>Name</b></font></td>\n\t\t<td align=\"center\"><font
size=\"2\" face=\"arial, helvetica,
geneva\"><b>Size</b></font></td>\n\t</tr>\n";

        //loop through the table rows
        for ($i = 0; $i <= count($files)-1; $i++) {
                $len = strlen($files[$i][name]);
                $len = $len-4;
                $img = "images/".substr("{$files[$i][name]}", 0,
$len).".jpg";
                echo "\t<tr>\n\t\t<td align=\"left\"><a
href=\"{$files[$i][name]}\"><img border=\"0\" src=\"$img\"
alt=\"{$files[$i][name]}\"></a></font></td>\n\t\t<td
align=\"center\"><font size=\"2\" face=\"arial, helvetica,
geneva\">&nbsp;{$files[$i][size]} kb</font></td>\n\t</tr>\n";
        }
        echo "</table>\n</body>\n</html>";
?>
 
Zuletzt bearbeitet:
Ich glaube das gehört in die PHP Sektion und nicht in HTML, aber ein Verzeichnis kann man mit dem hier auslesen

PHP:
readdir("ordner");
 
Ich hab jetzt schon das hier, denke, ich bin nah dran, aber irgendwie will es nicht...
PHP:
<?
$dateien = Array();
$handle = opendir('verzeichnis');
while (false !== ($datei = readdir($handle))) {
   if ($datei != "." && $datei != "..") {
   $dateien[] = $datei;
   }
}
closedir($handle);
sort ($dateien);
reset ($dateien);
while (list ($key, $val) = each ($dateien)) {
   echo "<a href=index.php?section=$val>$val</a><br>";
}
?>

<?php

if(isset($_GET['section']) AND isset($dateien[$_GET['section']])) {

	include $dateien[$_GET['section']];

} else {

	echo "<br><br><b>geht nicht</b>";

}

?>
 
PHP:
<? 
$dateien = Array(); 
$handle = opendir('verzeichnis'); 
while ($datei = readdir($handle))) { 
   if ($datei != "." && $datei != "..") { 
   $dateien[] = $datei; 
   } 
} 
closedir($handle); 
sort ($dateien); 
reset ($dateien); 
while (list ($key, $val) = each ($dateien)) { 
   echo "<a href=index.php?section=$val>$val</a><br>"; 
} 
?> 
...

Eventuell klappt es so.
 
Zuletzt bearbeitet:
Habs selbst rausbekommen.

PHP:
<?
$dateien = Array();
$handle = opendir('verzeichnis');
while (false !== ($datei = readdir($handle))) {
   if ($datei != "." && $datei != "..") {
   $dateien[] = $datei;
   }
}
closedir($handle);
sort ($dateien);
reset ($dateien);
while (list ($key, $val) = each ($dateien)) {
   echo "<a href=index.php?section=$val>".(substr($val, 0, strpos($val, ".")))."</a><br>";
}
?>
<br><br><br>
<?php

if(isset($_GET['section']) AND file_exists("verzeichnis/".$_GET['section']))
	{
	include("verzeichnis/".$_GET['section']);
	}
	else
	{
	echo "<br><br><b>geht nicht</b>";
	}

?>
 
Zurück