Dateien aus Verzeichnissen auslesen – Seitenweise blätterbar
Dieser Artikel beschreibt wie man auf einfache Weise Verzeichnisse ausliest und die Inhalte Tabellarisch darstellt – das ganze steuerbar in der Spaltenanzahl der Ausgabetabelle und auch der Anzahl pro Seite.
Komplettes Codebeispiel mit Erläuterungen
Hinweis:
Die Funktion zum Seitenweisen Blättern ist hier nicht enthalten. Diese ist aber in diesem Artikel Seitenweise Anzeige von Datensätzen zu finden.
Los geht es mit ein paar Daten zur Ablaufsteuerung (Bitte Kommentare im Quelltext beachten):
<?php // Name des Scriptes $progname = "dateien.php"; // Daten pro Seite $daten_per_site = 20; // Ausgabespalten der Tabelle $spalten = 2; /* HINWEIS! Die Ausgabespalten und die Daten pro Seite muessen Zahlenmaessig glatt teilbar sein um eine vernuenftige Tabelle auszugeben 15 / 3 = 5 == Passt 16 / 3 = 5,33 != Passt nicht 20 / 2 = 10 == Passt 20 / 3 = 6,66 != Passt nicht ... */ // wenn Seitenvariable gesetzt, entschaerfen... if(isset($_GET['los'])) { $los = intval($_GET['los'])+0; } // und Default Startzahl setzen... if(!isset($los) || $los == 0) { $los = 1; }
Nun wird mit dem Funktionsaufruf das Verzeichnis flags/ ausgelesen, dabei sollen nur png Dateien gelistet werden.
// Auslesen des Verzeichnisses mit der list_files function $pic = list_files('flags/','png');
Die nachfolgende Funktion kann dann an das Scriptende eingefügt werden
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # // Verzeichnis auslesen // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # function list_files($dir,$type){ return glob($dir."*.".$type); }
Weiter geht es mit der Verarbeitung der ausgelesenen Dateien:
// Datensatzanzahl festellen des Array pic $zeilen = count($pic); // Maximale Seitenanzahl festellen... $los_max = intval($zeilen / $daten_per_site)+1; // ... und falls uebeberschritten auf $los_max setzen $los = (($los > $los_max) OR ($los < 1)) ? $los_max : $los; // Limit fuer Query erstellen - Eintraege pro Seite $anz = ($los-1) * $daten_per_site; // Wenn Daten anliegen... if ($zeilen > 0) { // Seitennavi mit Parametern aufrufen $navigationslinks = pager($zeilen, $los, $daten_per_site, $progname.'?los', 1); // Tabellenkopf ?> <table cellspacing="2" cellpadding="1" border="0"> <tr> <td colspan="<?php echo $spalten; ?>"><?php echo $navigationslinks; ?></td> </tr> <?php // Daten ausgeben des aktuellen Bereiches $start = 0; $rows = 0; for ($i = $anz; $i <= ($anz-1) + $daten_per_site; $i++) { // Hier wird beim Durchlauf ein leeres Arrayelement mit gefüllt um leere // Tabellenspalten zu vermeiden $pic[$i] = $i <= $zeilen -1 ? $pic[$i] : ' '; $start++; // Nun erfolgt die Zeilenweise Ausgabe if ($pic[$i] != ' ' && $start == 1) { // Hier wird mittels des Zeilencounters und des Modulo Operators für // jede Zeile eine andere CSS Classe zugewiesen $rows++; $css = $rows % 2 == 1 ? 'spb' : 'spa'; echo "<tr>\n\t<td class=\"".$css."\">".$pic[$i]."</td>\n"; } elseif ($start > 1 && $start < $spalten) { echo "\t<td class=\"".$css."\">".$pic[$i]."</td>\n"; } elseif ($start == $spalten) { $start = 0; echo "\t<td class=\"".$css."\">".$pic[$i]."</td>\n</tr>\n"; } else { // Alles durch? Schleife mit break verlassen break; } } // Tabellenende ausgeben ?> <tr> <td colspan="<?php echo $spalten; ?>"><?php echo $navigationslinks; ?></td> </tr> </table> <?php // oder Fehlermeldung... } else { echo "Keine Daten gefunden!\n"; } ?> </body> </html> <?php
Das komplette Script, ohne die Blätterroutine, siehe Hinweis am Artikelanfang
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <title>Seitenweise Anzeige von Daten aus Verzeichnis</title> <style type="text/css"> body { background-color: #f7f7f7; font-family: Verdana, Arial; font-size: 11px; color: #000000; } .seiteninfo, .aktuelleseite, .pl { font-family: Verdana, Arial; font-size: 11px; text-align: center; color: #000000; border: 1px solid #97a8b9; border-collapse: collapse; } .seiteninfo { background-color: #dce0e9; font-weight: bold; padding: 1px 3px 1px 3px; } .aktuelleseite { background-color: #ffffff; font-weight: bold; padding: 2px 6px 2px 6px; } .pl a { display: block; float: left; background-color: #e4e9ed; color: #990000; text-decoration: none; font-weight: bold; padding: 2px 6px 2px 6px; white-space: nowrap; } .pl a:hover { color: #000000; text-decoration: none; font-weight: bold; background-color: #d3dce4; } .spa { color: #000000; background-color: #f0f0f0; border: 1px solid #97a8b9; font-size: 11px; padding: 3px; width: 200px; } .spb { color: #000000; background-color: #f2f5f7; border: 1px solid #97a8b9; font-size: 11px; padding: 3px; width: 200px; } </style> </head> <body> <?php // Name des Scriptes $progname = "dateien.php"; // Daten pro Seite $daten_per_site = 20; // Ausgabespalten der Tabelle $spalten = 2; /* HINWEIS! Die Ausgabespalten und die Daten pro Seite muessen Zahlenmaessig glatt teilbar sein um eine vernuenftige Tabelle auszugeben 15 / 3 = 5 == Passt 16 / 3 = 5,33 != Passt nicht 20 / 2 = 10 == Passt 20 / 3 = 6,66 != Passt nicht ... */ // wenn Seitenvariable gesetzt, entschaerfen... if(isset($_GET['los'])) { $los = intval($_GET['los'])+0; } // und Default Startzahl setzen... if(!isset($los) || $los == 0) { $los = 1; } // Auslesen des Verzeichnisses mit der list_files function $pic = list_files('flags/','png'); // Datensatzanzahl festellen des Array pic $zeilen = count($pic); // Maximale Seitenanzahl festellen... $los_max = intval($zeilen / $daten_per_site)+1; // ... und falls uebeberschritten auf $los_max setzen $los = (($los > $los_max) OR ($los < 1)) ? $los_max : $los; // Limit fuer Query erstellen - Eintraege pro Seite $anz = ($los-1) * $daten_per_site; // Wenn Daten anliegen... if ($zeilen > 0) { // Seitennavi mit Parametern aufrufen $navigationslinks = pager($zeilen, $los, $daten_per_site, $progname.'?los', 1); ?> <table cellspacing="2" cellpadding="1" border="0"> <tr> <td colspan="<?php echo $spalten; ?>"><?php echo $navigationslinks; ?></td> </tr> <?php // Daten ausgeben des aktuellen Bereiches $start = 0; $rows = 0; for ($i = $anz; $i <= ($anz-1) + $daten_per_site; $i++) { $pic[$i] = $i <= $zeilen -1 ? $pic[$i] : ' '; $start++; if ($pic[$i] != ' ' && $start == 1) { $rows++; $css = $rows % 2 == 1 ? 'spb' : 'spa'; echo "<tr>\n\t<td class=\"".$css."\">".$pic[$i]."</td>\n"; } elseif ($start > 1 && $start < $spalten) { echo "\t<td class=\"".$css."\">".$pic[$i]."</td>\n"; } elseif ($start == $spalten) { $start = 0; echo "\t<td class=\"".$css."\">".$pic[$i]."</td>\n</tr>\n"; } else { break; } } ?> <tr> <td colspan="<?php echo $spalten; ?>"><?php echo $navigationslinks; ?></td> </tr> </table> <?php } else { echo "Keine Daten gefunden!\n"; } ?> </body> </html> <?php // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # // Verzeichnis auslesen // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # function list_files($dir,$type){ return glob($dir."*.".$type); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # // Seitennavigation // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # // Code einfügen .... // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # ?>
Weitere Beiträge
Amazon Prime Deal Days: Top-Rabatte am 7. und 8. Oktober nutzen

Am 7. und 8. Oktober ist es wieder soweit: Die Amazon Prime Deal Days 2025 laden Prime-Mitglieder zu einer exklusiven Schnäppchenjagd ein. Das Shopping-Event bietet hunderttausende Rabatte auf Produkte aus Kategorien wie Elektronik, Mode, Haushalt und Kosmetik. Bereits jetzt können sich Prime-Nutzer auf spannende Vorab-Deals freuen, die direkt über Amazon verfügbar sind. Natürlich wird es […]
Der neue Kalender 2026 für den Kindle Scribe ist da

Noch sind die Temperaturen angenehm, doch das Jahr 2026 steht bereits vor der Tür. Wer seine Pläne für das kommende Jahr effektiv organisieren möchte, sollte sich frühzeitig nach einem geeigneten Kalender umsehen. Für Nutzer des Kindle Scribe gibt es jetzt eine ideale Lösung: den interaktiven Kalender 2026. Dieser digitale Jahresplaner bietet eine Vielzahl von Funktionen, […]
Excel Rechnungsvorlage für Etsy und Amazon – Zeitsparend & komfortabel für Freiberufler und Autoren

Als Freiberufler oder Autor auf Plattformen wie Etsy und Amazon stehen Sie täglich vor der Herausforderung, professionelle Rechnungen zu erstellen. Mit einer passenden Excel Rechnungsvorlage gestalten Sie diesen Prozess deutlich effizienter und rechtssicher. Die speziell für Kreative, Autoren und Selbstständige entwickelte Excel Rechnungsvorlage für Etsy und Amazon ist sofort einsetzbar und bietet zahlreiche Vorteile.
Amazon Prime Day 2025: Top-Deals für Technik, Büro & Home Office

Der Amazon Prime Day 2025 ist gestartet und begeistert wieder mit vielen exklusiven Schnäppchen. Als Prime-Mitglied erhalten Sie vor allen anderen Zugriff auf die besten Deals. Besonders Technikfans und Home-Office-Nutzer kommen in diesem Jahr voll auf ihre Kosten. In diesem Artikel stellen wir Ihnen die spannendsten Prime Day Angebote in den Kategorien höhenverstellbare Schreibtische, Router, […]
Keine Kommentare vorhanden