Systemvoraussetzung
- Linux
- Windows
- PHP 4 >= 4.3.0
- PHP 5
Datei(en)
imagesVerz.php
Problem
Sie haben ein Verzeichnis mit Bildern und möchten diese auf Ihrer Website
verlinken. Neben den Bildern befinden sich in diesem Verzeichnis allerdings
auch andere Dateien wie z. B. PHP-Dateien
oder TXT-Dateien,
die nicht angezeigt
werden sollen. Außerdem wollen Sie nicht nur eine Verlinkung zu den
Bildern, sondern auch die Dateigröße sowie die letzte Aktualisierung anzeigen.
Lösung
Bei näherem Betrachten des Problems wird klar, dass die Lösung nur ein
Schleifendurchlauf sein kann, der jede Datei auf ihre Endung überprüft und
das Ergebnis ausgibt. Zum Glück steht uns hier wieder eine PHP-Funktion
hilfreich zur Seite, die uns sehr viel Arbeit abnimmt. Wir durchlaufen zwar das
Verzeichnis, lassen aber jede Datei durch die Funktion glob() überprüfen.
Wir müssen lediglich das Verzeichnis und die Dateiendung angeben, den Rest
erledigt die Funktion. Findet sie eine Datei, erhalten Sie als Rückgabewert den
Pfad zu der Datei. Somit haben wir direkt die korrekte Pfadangabe für die
Darstellung.
Bitte beachten Sie, dass die Funktion glob() nicht mit entfernten Dateien auf
einem anderen Server arbeiten kann. Die zu suchenden Dateien müssen sich
auf dem gleichen Server befinden.
function listPicture($dir=".",$type="jpg")
@param string $dir
@param string $type
@return array $picture
Als Erstes übergeben wir unserer Funktion das Verzeichnis und die Dateiendung
($pic = listPicture("bilder/","gif");) für unsere Verzeichnisauflistung
(45). Sollten Sie der Funktion leere Werte übergeben, wird das
aktuelle Arbeitsverzeichnis nach der Dateiendung jpg durchsucht. Die Funktion
glob() (47) durchläuft das komplette Verzeichnis und sucht nach der
gesuchten Dateiendung – gibt es einen Treffer, so wird der Pfadname (48) inkl.
Dateiname, der Dateigröße (49) (hier erfolgt schon die Umrechnung in KB)
sowie des letzten Aktualisierungsdatums (50) der Datei in das Array $picture
gespeichert. Ist das Verzeichnisende erreicht, wird mit return (54) das Array
zurückgegeben.
45:
46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: |
function listPicture($dir=".",$type="jpg")
{
$x = 0;
foreach (glob($dir."*.".$type) as $filename) {
$picture[$x]['file'] = $filename; $picture[$x]['size'] = filesize($filename) / 1024; $picture[$x]['time'] = filemtime($filename); $x++; } return $picture; }
$pic = listPicture("bilder/","gif");
|
Beispiel 7.1: imagesVerz.php
In $pic haben wir jetzt alle Bilder gespeichert, wir müssen lediglich den
Inhalt korrekt auflisten. Aus diesem Grund durchlaufen wir das vollständige
Array (66). Selbstverständlich hätten Sie das auch direkt in der Funktion
listPicture() machen können, besser ist es jedoch, beide Aufgaben zu
trennen. Jetzt müssen wir lediglich die Ausgabe korrekt darstellen, also einen
Link (72) zu der Datei erstellen und das Datum (74) sowie die Dateigröße (73)
formatieren.
66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: | for($x=0;$x<count($pic);$x++)
{
$file = $pic[$x]['file']; $size = number_format($pic[$x]['size'], 1, ',', '.'); $date = date("d.m.Y, H:i:s", $pic[$x]['time']); echo '<a href="'.$file.'">'.$file.'</a>'; echo ' (Größe: ' . $size . ' KB - '; echo 'Letzte Änderung: ' . $date . ')'; echo '<br><br>';
} |
Beispiel 7.2: imagesVerz.php
Das Ergebnis unserer Bilderauflistung würde in unserem Fall folgendermaßen
aussehen. Sie werden sicherlich die Darstellung anpassen – das ist auch
gewünscht.
bilder/linuxpenguin.
gif (Größe: 191,4 KB – Letzte Änderung: 12.03.2006,
11:28:30)
bilder/linux.gif (Größe: 1,5 KB – Letzte Änderung: 12.03.2006, 11:28:20)
bilder/windows.gif (Größe: 1,9 KB – Letzte Änderung: 12.03.2006, 11:59:25) |
Dieses Skript aus dem SELFPHP KOCHBUCH wurde von SELFPHP unter dem "Tarif Mc500" von McAc.net-Webhosting erfolgreich ausgeführt und getestet!
Auf der Übersichtseite unter "McAc.net – Webhosting zu diesem Buch" finden Sie weitere Informationen zu dem Webhostingpaket, dass durch SELFPHP getestet wurde.
|