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
Home Office im Grünen: Warum ebenerdige Ferienhäuser der ideale Rückzugsort für digitale Nomaden sind
Ebenerdige Wochenendhäuser und Ferienhäuser. Das Internet hat die Art und Weise, wie wir kommunizieren, arbeiten und unsere Freizeit gestalten, grundlegend verändert. Es hat sich zu einem integralen Bestandteil unseres täglichen Lebens entwickelt und ermöglicht es uns, unsere Arbeit von nahezu jedem Ort aus zu erledigen. Für viele Webmaster, Programmierer und Online-Autoren ist der klassische Büroalltag […]
Aktuelle Desktop-Betriebssysteme im Vergleich für Webmaster
Aktuelle Desktop-Betriebssysteme unterscheiden sich für Webmaster vor allem bei Entwicklungs-Tools, Sicherheit, Automatisierung und Kosten. Entscheidend ist weniger das „schnellste“ System, sondern welches Betriebssystem den eigenen Web-Workflow am effizientesten unterstützt. Webmaster arbeiten typischerweise mit Code-Editoren, Browser-Developer-Tools, lokalen Webservern, Versionsverwaltung und Automatisierungsskripten. Betriebssysteme beeinflussen, wie reibungslos diese Werkzeuge zusammenspielen, wie stabil und sicher sie laufen und wie […]
Interaktiver Businessplaner 2026 für Kindle Scribe – Planen, Ziele erreichen, Erfolg steigern
Immer mehr Menschen möchten sich online ein nachhaltiges Einkommen aufbauen. Digitale Geschäftsmodelle bieten heute viele Chancen mit vergleichsweise geringem Startkapital. Etsy‑Shop‑Betreiber, digitale Nomaden und Online‑Autoren verfolgen dabei klare wirtschaftliche Ziele. Ohne strukturierte Planung bleibt langfristiger Erfolg jedoch meist dem Zufall überlassen. Ein digitaler Businessplaner auf dem Kindle Scribe bringt die gewünschte Lösung. Für eine minimale […]
Windows 11 Shortcuts: Die wichtigsten Tastaturbefehle für schnelleres Arbeiten
Profis kennen die wahre Stärke von Tastaturbefehlen unter Windows 11. Wer effizient arbeiten möchte, nutzt Shortcuts statt ausschließlich der Maus. Windows 11 bietet zahlreiche neue Funktionen mit passenden Tastenkombinationen. Microsoft setzt weiterhin konsequent auf bewährte und neue Shortcuts. Diese Befehle gehören fest zum Betriebssystem und steigern die Produktivität spürbar.
Keine Kommentare vorhanden