[PHP]Alle Datein und Unterordner + Links auflisten
Hallo,
ich wollte mal fragen, wie ich Alle Datein und Unterordner aus einem Ordner auf dem Webspace auslesen kann. Und dann möglichst bei den Datein die Links noch dazu.
Habe schon gegooglet aber ich finde nichts richtiges, wo auch die Links angezeigt wird.
Mit freundlichen Grüßen hallo2000
EDIT:
Diesen Code habe ich getestet: ]
Er funktioniert auch doch leider ohne Link. Kann man das vieleicht noch hinzufügen?
Dann ersetzt du das "/var/www" durch den absoluten Pfad "http://www.seite.de". Oder du löscht das /var/www und hast relative Pfade vom document root.
Das Ganze dann natürlich noch ausgeben...
Edit: Sehe gerade, dass nur der Dateiname ausgegeben wird. Du brauchst natürlich den Pfad auch.
PHP-Code:
printf( "% ".$pos."s %s\n", '|-', $dir.$file );
Geändert von pixelflat (05.04.2011 um 13:04 Uhr).
05.04.2011, 13:04
Threadersteller
hallo2000
also bis jetzt kommt nur der Dateiname raus.
Ich möchte ja auf diesen Dateiname noch den Link haben.
Wie kann ich das den dazu geben?
05.04.2011, 13:37
pixelflat
Siehe mein Edit. Mit $dir.$file hast du den Pfad ab dem angegebenen Such-Verzeichnis.
Die Ausgabe ist dann ja leicht:
PHP-Code:
echo "<a href='$dir$file'>$file</a>";
Das funktioniert natürlich nur solange du einen Pfad innerhalb von /var/www/ angibst (bzw. wo auch immer document root ist). Macht andernfalls aber auch keinen Sinn, weil du auf andere Dateien nicht verlinken kannst.
05.04.2011, 13:38
Threadersteller
hallo2000
ok, aber wie kann ich das var/www/ nun ändern?
EDIT:
Ich hab das jetzt mal geändert und jetzt wird auch noch etwas vom Pfad hinzugefügt.
Aber ich möchte es eigentlich möglichst so, das nur der Dateiname angezeigt wird und dann wenn man draufklickt, das man dann die Datei öffnet.
Geändert von hallo2000 (05.04.2011 um 13:43 Uhr).
05.04.2011, 13:45
pixelflat
Ich glaube du solltest dich erst mal mit den Grundlagen von PHP beschäftigen. Besser sogar erst mal HTML.
Ein Link sieht so aus: <a href="PFAD_ZUR_DATEI">LINKNAME</a>
Du musst nur alles an der richtigen Stelle einsetzen.
05.04.2011, 13:52
Threadersteller
hallo2000
Also mit HTML kenne mich etwas aus.
Ich weiss auch wie ich einen text per HTML ausgebe doch mein Problem ist, das ich das mit dem Link nicht hinbekomme.
Geändert von hallo2000 (05.04.2011 um 13:55 Uhr).
05.04.2011, 14:00
pixelflat
Hab ich doch oben schon geschrieben:
Zitat:
Zitat von pixelflat
Die Ausgabe ist dann ja leicht:
PHP-Code:
echo "<a href='$dir$file'>$file</a>";
05.04.2011, 14:13
Threadersteller
hallo2000
das funktioniert ja nicht.
Es werden nur die Namen angezeigt und es werden keine Links dazu gemacht und dann wird auch noch die ganze seite zerstört.
05.04.2011, 15:02
pixelflat
Poste mal deinen Code wie du ihn verändert hast...
05.04.2011, 15:27
Threadersteller
hallo2000
PHP-Code:
<?php
function show_dir( $dir, $pos=2 ) { if ( $pos == 2 ) { echo "<hr /><pre>"; }
Hast du dir einfach irgendein echo ausgesucht und das ersetzt?
Zugegeben, der Code ist nicht ganz einfach, vor allem weils eine rekursive Funktion ist. Aber die 2 Bedingungen am Anfang und Ende sind lediglich für die 2 horizontalen Linien.
PHP-Code:
<?php
function show_dir( $dir, $pos=2 )
{
if ( $pos == 2 ) {
echo "<hr /><pre>";
}
Ich danke dir.
Es hat endlich funktioniert.
Danke, Danke, Danke
EDIT (autom. Beitragszusammenführung):
Ich hätte noch eine Frage.
Kann ich diese Funktion auch per Button oder HTML link durch klick ausführen, so das es aktualisiert wird?
Geändert von hallo2000 (05.04.2011 um 16:39 Uhr).
Grund: Antwort auf eigenen Beitrag innerhalb von 24 Stunden!
05.04.2011, 17:21
pixelflat
Jain.
Wenn die Seite schon geladen wird kannst du mit PHP nichts mehr machen. Du könntet höchstens die komplette Seite mit einem Button aktualisieren (<input type="button" value="Aktualisieren" onclick="window.location.reload()"/>).
Eine bessere, aber auch etwas kompliziertere Möglichkeit wäre AJAX. Dafür speicherst du nur die Funktion und sonst nichts in eine PHP-Datei und rufst sie mit JS später auf. So kannst du auch die Liste aktualisieren ohne die Seite komplett neu laden zu müssen. Ich würde dafür eine JS Bibliothek wie JQuery oder prototype verwenden - macht das Ganze wesentlich einfacher.
05.04.2011, 18:04
Threadersteller
hallo2000
dann mach ich mir das erstmal leicht und lade die Seite ganz neu.
Aberich werde mir das andere auch mal anschauen.
Danke.
EDIT (autom. Beitragszusammenführung):
Ich hab das noch eine frage zu der Dateiauflistung.
Also die Datein werden nun ja aufgelistet.
Nun möchte ich noch ein kleines Bild daneben haben, womit ich die Datein löschen kann. Das Bild wird schn angezeigt und ich weiss auch wie man Datein löscht, doch kann man das überhaupt so machen, weil das Datein löschen ja nur mit php geht?
Geändert von hallo2000 (05.04.2011 um 18:04 Uhr).
Grund: Antwort auf eigenen Beitrag innerhalb von 24 Stunden!
05.04.2011, 18:40
pixelflat
Dafür musst du einen neuen Request an den Server schicken und den dann auswerten, entweder über POST oder GET.
Es macht aber nicht viel Sinn jetzt eine Lösch-Funktion einzubauen, wenn du dich nicht authentifizieren kannst. Denn so kann jeder einfach irgendwelche Dateien löschen.
]
05.04.2011, 18:44
Threadersteller
hallo2000
ne, das stimmt nicht gans, weil bevor man da überhaupt hinkommt, muss man sich einloggen. Und das läuft wiederrum über eine MySQL Datenbank.
Und die, die sich dort einloggen können, bin ich und 2 Kumpels und wenn wir etwas löschen, ist das ok.
05.04.2011, 23:40
Creator1981
Möchte mich hier nicht wirklich in den Thread reinhängen, aber ich finde die schreibeweise:
PHP-Code:
$link = "<a href='$dir$file'>$file</a>";
nicht wirklich schön.
Ich würde immer folgende Schreibweise bevorzugen. Das macht den Code einfach lesbarer.
PHP-Code:
$link = "<a href='".$dir.$file."'>$file</a>";
Sieht doch gleich viel schicker aus Bei größeren Strings oder Verkettungen wäre es sonst echt übel sich da einlesen zu müssen.