Skip to main content

Alles für die Homepage... Scripte, Templates, Workshops und Support

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):

CODE:
<?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.

CODE:
// Auslesen des Verzeichnisses mit der list_files function
$pic = list_files('flags/','png');

Die nachfolgende Funktion kann dann an das Scriptende eingefügt werden

CODE:
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
// Verzeichnis auslesen
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
function list_files($dir,$type){
return glob($dir."*.".$type);
}

Weiter geht es mit der Verarbeitung der ausgelesenen Dateien:

CODE:
// 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 &nbsp; gefüllt um leere 
// Tabellenspalten zu vermeiden
$pic[$i] = $i <= $zeilen -1  ? $pic[$i] : '&nbsp;'; 
$start++;

// Nun erfolgt die Zeilenweise Ausgabe
if ($pic[$i] != '&nbsp;' && $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

CODE:
<!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] : '&nbsp;'; 
$start++;

if ($pic[$i] != '&nbsp;' && $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 Black Friday Woche startet

amazon black friday woche 2023

Auch in diesem Jahr präsentiert Amazon während der Black Friday Woche wieder erstklassige Schnäppchen in allen Kategorien. Kundinnen und Kunden können sich auf einzigartige Geschenkideen und interessante Angebote für die bevorstehende Weihnachtszeit freuen. Darüber hinaus gibt es eine Vielzahl weiterer Produkte mit attraktiven Preisnachlässen – und das elf Tage lang. Ab Freitag, den 17. November […]

Mit eigenem Buch zum Expertenstatus

buchautor dirk kreuter erfolgreicher autor bestseller

Eigenes Buch. Nutzen Sie diese sensationelle Chance, ihre Reputation zu steigern und Bestsellerautor zu werden. Haben Sie sich auch schon immer gefragt, wie bekannte Größen der Wirtschaft es immer wieder schaffen, Bestseller zu landen? Nun, es gibt kein Geheimrezept für den Erfolg als Autor. Doch eins ist sicher: Sie müssen Ihre Leser begeistern und fesseln […]

Amazon Black-Friday-Woche vom 17. bis 27. November

Amazon

Amazon Black-Friday-Woche. Der Shopping-Monat November beginnt und damit auch die Vorweihnachtszeit. Den Anfang macht der Singles Day Shopping am 11. November. Gefolgt vom Black Friday. Natürlich ist auch Amazon an diesem Tag wieder mit vielen Angeboten am Start. Schnäppchenjäger sollten sich daher die Zeit vom 17. bis 27. November vormerken. Die ersten Angebote sind bereits […]

Empfehlung: Die besten Midjourney Prompts

midjourney prompts

Midjourney Prompts. Künstliche Intelligenz (KI) ist heutzutage ein heiß diskutiertes Thema. Midjourney trägt zweifellos zu diesem Erfolg bei. Es handelt sich um einen benutzerfreundlichen KI-Generator, der hochwertige Bilder mit verschiedenen Motiven erzeugt. Der Zugriff auf Midjourney erfolgt ausschließlich über Textbefehle an einen Discord-Bot. Durch die Verwendung dieser Befehle, auch Prompts genannt, können neue KI-generierte Bilder […]


Ähnliche Beiträge



Keine Kommentare vorhanden


Du hast eine Frage oder eine Meinung zum Artikel? Teile sie mit uns!

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *