Html seiten in ordner Auflisten.

...komplette Frage anzeigen

3 Antworten

Für PHP-Inhalt muss die Datei aber die Endung .php haben, außer Du konfigurierst den Server so, dass er auch HTML-Dateien nach PHP parst. Nehmen wir an, die Ausgabedatei befindet sich in /html/website/ und Du willst Dateien aus /html/website/themen ausgeben. Der Code hier könnte klappen (nicht getestet):

<?php

$dir = $_SERVER["DOCUMENT_ROOT"] . "/website/themen/;

foreach(glob($dir . "*.html") AS $file) {

    print '<a href="themen/' . $file . '">' . str_replace(".html","",$file) . '</a><br />';

}

?>

Geht.. Getestet

0

Danke für den Stern :)

0

Einen Punkt würde ich noch machen:

An der stelle mit $SERVER["DOCUMENTROOT"] würde ich eine abfrage machen, ob die Variable ggf. nur "/" beinhaltet und dann dieses einfach ignorieren.

Also im Klartext:

<?php

$dir = ($_SERVER["DOCUMENT_ROOT"] == "/") ? "/website/themen/" : ($_SERVER["DOCUMENT_ROOT"] . "/website/themen/";

Das überprüft auch ob ein doppeltes "/" am afang steht. Bei falscher Konfiguration des apache oder eines anderen Webservers (grade IIS unter Windows) kann ein doppel "/" zum absturz des Scripts führen.

0
$verzeichnis="Pfad/zu/dem/Verzeichnis/";
$linkprefix="http://www.domain.de/Verzeichnis/";
$dateiliste=glob($verzeichnis."*.html");
foreach($dateiliste as $dateipfad){
$name=basename($dateipfad);
$printname=basename($dateipfad,".html");
echo "<a href='".$linkprefix.$name."'>".$printname."</a>"
}

Mit glob() liest Du das Verzeichnis aus,

mit foreach() lässt Du eine Schleife über das Ergebniss-Array laufen,

mit basename() filterst Du den Dateinmaen aus.

Einmal ohne und einmal mit html.

mit echo ""; gibst Du den Link aus.

$verzeichnis und $Linkprefix musst Du mit Deinen Daten füllen

Da kannst Du natürlich auch auch die Server-Variablen in $verzeichnis einsetzen.

Du musst aber aus dem Ergebniss der glob() -Liste den Pfad rausfiltern.

Sonst funktionieren Deine Links nicht, da Pfad und URL seltenst identisch sind.


# Hier den Pfad einsetzen wo deine HTML Dateien Sind
$dir = "/etc/php5/";

// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
               # Hier die Ausgabe als Link formatiertert <a  href.... >
            echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
        }
        closedir($dh);
    }
}

Im Prinzip gut aber soweit ich sehe überprüfst du nicht, ob die gelesene Datei eine *.html datei ist.

Wenn nun im Ordner noch andere dateien wie z.B. die PHP datei liegt wird diese auch als Link mit angegeben. Oder wenn du eine komplett andere hast die auch.

0

Was möchtest Du wissen?