Kleine Anpassung an Album Script PHP
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
austauschen
bekommen
bild
code
date
datei
datum
fehler
http
info
limit
manual
nachschlagen
neuesten bilder
pfad
sekunde
unbekannten funktionen
url
verzeichnis
-
Hallo !
Ich habe folgendes Script zum Auslesen aller Bilder in einem Verzeichnis.
<?php $bilderliste = array(); $verzeichnis = "./"; $handle = openDir($verzeichnis); while ($datei = readDir($handle)) { $verzeichnis_datei = $verzeichnis . $datei; if ($datei != "." && $datei != ".." && !is_dir($datei)) { if (strstr($datei, ".gif") || strstr($datei, ".png") || strstr($datei, ".jpg") || strstr($datei, ".JPG")) { $info = getimagesize($verzeichnis_datei); array_push($bilderliste, array(filemtime($verzeichnis_datei) , $verzeichnis_datei , $info[0] , $info[1])); } } } closeDir($handle); rsort($bilderliste); echo " <table border='1'> <tr> <th>Bild</th> <th>Name</th> <th>Datum</th> <th>Pixel</th> </tr> "; foreach ($bilderliste as $zaehler => $element) { echo "<tr>"; echo "<th><img src=\"" . $bilderliste[$zaehler][1] . "\" width=\"300\" alt=\"\"></th>"; echo "<td>" . str_replace($verzeichnis, "", $bilderliste[$zaehler][1]) . "</td>"; echo "<td>" . date("d.m.Y H:i", $bilderliste[$zaehler][0]) . "</td>"; echo "<td>" . $bilderliste[$zaehler][2] . " x ". $bilderliste[$zaehler][3] . "</td>"; echo "</tr>"; } echo "</table>"; ?>
Jetzt will ich noch einbauen, dass nur die 20 neuesten Bilder angezeigt werden. Wie kann ich das machen? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
ich hab mir mal die Zeit genommen und das ein bisschen umgeschreiben.
<?php // pfad in dem nach bildern gesucht werden soll $path = getcwd(); $picture_list = get_newest_images($path, "{*.gif,*.png,*.jpg,*.JPG}", 20); echo " <table border='1'> <tr> <th>Bild</th><th>Name</th><th>Datum</th><th>Pixel</th> </tr> "; foreach($picture_list as $picture) { echo "<tr>"; echo "<th><img src=\"" . $path . $picture['filename'] . "\" width=\"300\" alt=\"" . $picture['filename'] . "\"></th>"; echo "<td>" . $picture['filename'] . "</td>"; echo "<td>" . date("d.m.Y H:i", $picture['filemtime']) . "</td>"; echo "<td>" . $picture['image_size_width'] . " x ". $picture['image_size_height'] . "</td>"; echo "</tr>"; } echo "</table>"; function get_newest_images($path, $file_types, $limit) { $picture_list = array(); $filemtimes = array(); chdir($path); foreach(glob($file_types, GLOB_BRACE) as $filename) { $image_info = getimagesize($filename); $filemtime = filemtime($filename); $filemtimes[] = $filemtime; $picture_list[] = array("filename" => $filename, "filemtime" => $filemtime, "image_size_width" => $image_info[0] , "image_size_height" => $image_info[1]); } array_multisort($filemtimes, SORT_DESC, $picture_list); return array_slice($picture_list, 0, $limit); } ?>
Das ist ungetestet, ich garantiere für nix. :D
Alle unbekannten Funktionen bitte im Manual nachschlagen.
//Edit1, 2: Fehler ausgebessert ...
Beitrag zuletzt geändert: 15.11.2011 13:09:27 von philippkern -
philippkern schrieb:
Hallo,
ich hab mir mal die Zeit genommen und das ein bisschen umgeschreiben.
<?php // pfad in dem nach bildern gesucht werden soll $path = getcwd(); $picture_list = get_newest_images($path, "{*.gif,*.png,*.jpg,*.JPG}", 20); echo " <table border='1'> <tr> <th>Bild</th><th>Name</th><th>Datum</th><th>Pixel</th> </tr> "; foreach($picture_list as $picture) { echo "<tr>"; echo "<th><img src=\"" . $path . $picture['filename'] . "\" width=\"300\" alt=\"" . $picture['filename'] . "\"></th>"; echo "<td>" . $picture['filename'] . "</td>"; echo "<td>" . date("d.m.Y H:i", $picture['filemtime']) . "</td>"; echo "<td>" . $picture['image_size_width'] . " x ". $picture['image_size_height'] . "</td>"; echo "</tr>"; } echo "</table>"; function get_newest_images($path, $file_types, $limit) { $picture_list = array(); $filemtimes = array(); chdir($path); foreach(glob($file_types, GLOB_BRACE) as $filename) { $image_info = getimagesize($filename); $filemtime = filemtime($filename); $filemtimes[] = $filemtime; $picture_list[] = array("filename" => $filename, "filemtime" => $filemtime, "image_size_width" => $image_info[0] , "image_size_height" => $image_info[1]); } array_multisort($filemtimes, $picture_list); return array_slice($picture_list, 0, $limit); } ?>
Das ist ungetestet, ich garantiere für nix. :D
Alle unbekannten Funktionen bitte im Manual nachschlagen.
//Edit1: Fehler ausgebessert ...
Hallo !
Danke, das geht jetzt, dass nur 20 Bilder angezeigt werden. Allerdings werden nicht die 20 neuesten angezeigt.
Die neuesten Bilder sollen immer oben sein.
Beitrag zuletzt geändert: 15.11.2011 12:25:15 von davy -
philippkern schrieb:
Also es wird zur Errechnung der "neuesten" Bilder filemtime verwendet.
Das gibt das Datum der letzten Dateiänderung zurück, und nicht wann es erstellt wurde.
Ein Erstelldatum kann man glaub ich nicht bekommen.
Bei meinem Script im 1. Post ging das so, dass die neusten Bilder oben waren.
Das Script ist für eine Webcam, die in einen Ordner auf meinem Server alle 10 Sekunden ein Bild speichert.
Und das neueste Bild soll immer oben sein. Das Änderungsdatum ist somit auch das Erstelldatum. -
Ok dann ist ja gut.
In meinem Script ist ein Fehler.
array_multisort($filemtimes, $picture_list); #mit array_multisort($filemtimes, SORT_DESC, $picture_list); #austauschen
Edit:
Script schein dann zu funktionieren:
http://philippkern.lima-city.de/bilder/glob_test.phps
http://philippkern.lima-city.de/bilder/glob_test.php
Bitte beachte auch das ich ein chdir eingebaut habe. Dadurch könnte es eventuell für spätere Pfade probleme geben.
Beitrag zuletzt geändert: 15.11.2011 13:20:04 von philippkern -
philippkern schrieb:
Ok dann ist ja gut.
In meinem Script ist ein Fehler.
array_multisort($filemtimes, $picture_list); #mit array_multisort($filemtimes, SORT_DESC, $picture_list); #austauschen
Vielen Dank !
Jetzt klappt alles! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage