Bilder nach Dateinamen sortieren
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anpassen
array
ausgeben
bild
code
datei
einlesen
file
image
info
ordner
pfad
reihe
schau
sortieren
spalten
tabelle
url
verzeichnis
zeug
-
Hallo,
hier habe ich ein Script, womit ich Bilder im gleichen Ordner, wo das Script liegt, ausgeben kann:
<?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); foreach ($bilderliste as $zaehler => $element) { $filepath = $bilderliste[$zaehler][1]; echo '<tr><td><img src="' . $bilderliste[$zaehler][1] . '" width="150" alt=""></td>'; $counter++; if (($counter % 3) == 0) { echo "</tr><tr>"; } } echo "</table></td> </tr>"; ?>
Zurzeit werden die Bilder nach dem Änderungsdatum sortiert, d.h. die Bilder, die ich zuletzt hoichgeladen habe, sind auch am Anfang der Seite. Ich will die Bilder aber nach Ihrem Dateinamen sortieren, in meinem Fall Nummern von 1 - 36. Wie passe ich das Script dementsprechend um? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
php-oop schrieb:
"umpassen"? das sollte "anpassen" heißen (oder "umändern")
Wie passe ich das Script dementsprechend um?
Zum Script: da ist relativ viel umständliches Zeug drin, ich hab mir die Mühe gemacht dein Script etwas zu verbessern und vereinfachen...
Schau obs dir so gefällt...<?php // Ordner $dir einlesen $images = array(); $dir = './'; // Pfad zu den Bildern $handle = opendir($dir); while(($file = readdir($handle)) !== false) { if(!is_dir($dir . $file) && preg_match('/\.(jpe?g|gif|png)$/i', $file)) { $path = $dir . $file; $images[$file] = array( 'mtime' => filemtime($path), 'path' => $path, 'size' => getimagesize($path) ); } } closedir($handle); ksort($images); // nach Schlüsseln sortieren // Tabelle ausgeben; 3 Spalten echo("<table>\n"); $counter = 0; foreach($images as $name => $info) { if(!($counter % 3)) echo('<tr>'); echo("<td><img src=\"{$info['path']}\" width=\"150\" alt=\"{$name}\"></td>"); $counter++; if(!($counter %3)) echo("</tr>\n"); $counter %= 3; } echo('</table>'); ?>
Das Array $images hat einen neuen Aufbau... der sollte das ganze etwas sinnvoller und leichter verständlich machen
Beitrag zuletzt geändert: 16.5.2012 19:57:01 von hackyourlife -
hackyourlife schrieb:
php-oop schrieb:
"umpassen"? das sollte "anpassen" heißen (oder "umändern")
Wie passe ich das Script dementsprechend um?
Zum Script: da ist relativ viel umständliches Zeug drin, ich hab mir die Mühe gemacht dein Script etwas zu verbessern und vereinfachen...
Schau obs dir so gefällt...<?php // Ordner $dir einlesen $images = array(); $dir = './'; // Pfad zu den Bildern $handle = opendir($dir); while(($file = readdir($handle)) !== false) { if(!is_dir($dir . $file) && preg_match('/\.(jpe?g|gif|png)$/i', $file)) { $path = $dir . $file; $images[$file] = array( 'mtime' => filemtime($path), 'path' => $path, 'size' => getimagesize($path) ); } } closedir($handle); ksort($images); // nach Schlüsseln sortieren // Tabelle ausgeben; 3 Spalten echo("<table>\n"); $counter = 0; foreach($images as $name => $info) { if(!($counter % 3)) echo('<tr>'); echo("<td><img src=\"{$info['path']}\" width=\"150\" alt=\"{$name}\"></td>"); $counter++; if(!($counter %3)) echo("</tr>\n"); $counter %= 3; } echo('</table>'); ?>
Das Array $images hat einen neuen Aufbau... der sollte das ganze etwas sinnvoller und leichter verständlich machen
Danke dir! Das klappt perfekt ;)
Geht es auch, dass, wie vorher, 6 Bilder in einer Reihe angezeigt werden? Statt 3. -
php-oop schrieb:
Irgendwie steht in deinem Code nur was von
Geht es auch, dass, wie vorher, 6 Bilder in einer Reihe angezeigt werden? Statt 3.
und ansonsten wird einfach ungültiger HTML-Code erstellt (pro Bild$count % 3
und alle 3 Bilder ein<tr>
)... dass das 6 sein sollen war irgendwie nicht erkennbar...</tr>
Bei mir hat das einfach alle Bilder untereinander dargestellt.
Der ausgebesserte Code:<?php // Ordner $dir einlesen $images = array(); $dir = './'; // Pfad zu den Bildern $handle = opendir($dir); while(($file = readdir($handle)) !== false) { if(!is_dir($dir . $file) && preg_match('/\.(jpe?g|gif|png)$/i', $file)) { $path = $dir . $file; $images[$file] = array( 'mtime' => filemtime($path), 'path' => $path, 'size' => getimagesize($path) ); } } closedir($handle); ksort($images); // nach Schlüsseln sortieren // Tabelle ausgeben; $cols Spalten echo("<table>\n"); $counter = 0; $cols = 6; // 6 Spalten foreach($images as $name => $info) { if(!($counter % $cols)) echo('<tr>'); echo("<td><img src=\"{$info['path']}\" width=\"150\" alt=\"{$name}\"></td>"); $counter++; if(!($counter % $cols)) echo("</tr>\n"); $counter %= $cols; } if($counter % $cols) echo('</tr>'); echo('</table>'); ?>
-
hackyourlife schrieb:
php-oop schrieb:
Irgendwie steht in deinem Code nur was von
Geht es auch, dass, wie vorher, 6 Bilder in einer Reihe angezeigt werden? Statt 3.
und ansonsten wird einfach ungültiger HTML-Code erstellt (pro Bild$count % 3
und alle 3 Bilder ein<tr>
)... dass das 6 sein sollen war irgendwie nicht erkennbar...</tr>
Bei mir hat das einfach alle Bilder untereinander dargestellt.
Der ausgebesserte Code:<?php // Ordner $dir einlesen $images = array(); $dir = './'; // Pfad zu den Bildern $handle = opendir($dir); while(($file = readdir($handle)) !== false) { if(!is_dir($dir . $file) && preg_match('/\.(jpe?g|gif|png)$/i', $file)) { $path = $dir . $file; $images[$file] = array( 'mtime' => filemtime($path), 'path' => $path, 'size' => getimagesize($path) ); } } closedir($handle); ksort($images); // nach Schlüsseln sortieren // Tabelle ausgeben; $cols Spalten echo("<table>\n"); $counter = 0; $cols = 6; // 6 Spalten foreach($images as $name => $info) { if(!($counter % $cols)) echo('<tr>'); echo("<td><img src=\"{$info['path']}\" width=\"150\" alt=\"{$name}\"></td>"); $counter++; if(!($counter % $cols)) echo("</tr>\n"); $counter %= $cols; } if($counter % $cols) echo('</tr>'); echo('</table>'); ?>
Danke, jetzt gehts!
Vielen lieben Dank für deine Hilfe! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage