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 startet den 10. Prime Day am 16. und 17. Juli
![prime day juli 2024](https://inspire-world.de/wp-content/uploads/2024/07/prime-day-juli-2024-300x200-1-263x138.jpg)
Prime Day 2024: Vom 16. bis 17. Juli haben Prime-Mitglieder exklusiven Zugang zu einer Vielzahl von Angeboten in verschiedenen Kategorien wie Bekleidung, Elektronik, Küche & Haushalt und Spielzeug. Neue Deals werden während des gesamten Zeitraums veröffentlicht, um Prime-Mitgliedern am zehnten Prime Day stets etwas Neues zu bieten. Die ersten Angebote sind bereits verfügbar. Weitere Produkte […]
Amazon Oster-Angebote – erste Angebote sind verfügbar
![amazon oster-angebote maerz 2024](https://inspire-world.de/wp-content/uploads/2024/03/amazon-oster-angebote-maerz-2024-300x200-1-263x138.jpg)
Amazon Oster-Angebote: Ostern steht vor der Tür. Eine gute Gelegenheit, um die Wohnung oder den Arbeitsplatz bunter zu gestalten. Auch der Frühjahrsputz steht vor der Tür. Die Amazon Osterangebote vom 20. bis 25. März bieten attraktive Rabatte auf Elektronik, Haus & Garten, Spielwaren und mehr. Schneller Versand inklusive! Die ersten Angebote sind bereits verfügbar – […]
Das neue MacBook Air 2024 mit M3 Chip bei Amazon
![macbook air 2024 m3 chip](https://inspire-world.de/wp-content/uploads/2024/03/macbook-air-2024-m3-chip-300-263x138.jpg)
MacBook Air 2024. Apple präsentierte überraschend die neuen MacBook Air Modelle mit dem leistungsstarken M3 Chip. Neben der besseren Hardware, die deutlich schneller ist als die Rechner der Konkurrenz, wurde vor allem die Tatsache begrüßt, dass das Macbook endlich mit zwei externen Monitoren funktioniert. Erfreulich ist, dass die neuen MacBooks bereits bei Amazon bestellt werden […]
Last Minute Angebote von Amazon
![last miinute angebote amazon](https://inspire-world.de/wp-content/uploads/2023/12/last-miinute-angebote-amazon-300x200-1-263x138.jpg)
Wer noch auf der Suche nach dem passenden Weihnachtsgeschenk ist, ist bei den Last-Minute-Angeboten von Amazon genau richtig. Egal, ob Sie noch nicht wissen, was Sie schenken sollen, oder einfach ein Schnäppchen machen wollen – bei den Last-Minute-Angeboten werden Sie garantiert fündig.
Keine Kommentare vorhanden