PHP Blätterfunktion - Eine Bildergalerie
Autor
Flitze
Klicks 80686
Keywords:
Blätterfunktion, PHP Blätterfunktion, Seitenzahlen Tutorial, Seitenzahlen erstellen, Bildergalerie, Seitenzahlen, Bilder in Seiten einteilen
Klicks 80686
Rating für PHP Blätterfunktion
7.4 von 10
Bewertungen45
Stand
08.07.2010
7.4 von 10
Bewertungen45
Keywords:
Blätterfunktion, PHP Blätterfunktion, Seitenzahlen Tutorial, Seitenzahlen erstellen, Bildergalerie, Seitenzahlen, Bilder in Seiten einteilen
Breadcrumb:
Tutorials » PHP Blätterfunktion » PHP Blätterfunktion - Eine Bildergalerie
3. Bildergalerie
[ADSENSE_LINE]Ich sehe es in Foren relativ häufig, dass sich jemand eine eigene kleine Galerie schreiben will und dabei auf das Problem stößt, die Bilder zu positionieren und dann auch noch mit Seitenzahlen zu verbinden.
Um das Problem zu lösen müssen alle Bilder gezählt werden. Das könnte so geschehen
PHP:
<?php
$extensions = array('gif', 'jpg', 'jpeg');
$dir = 'bilder/';
$bilder = array();
foreach($extensions as $key => $extension)
$bilder = array_merge($bilder, glob($dir.'*.'.$extension));
$anzahl = count($bilder);
if(!$anzahl)
echo "<b>Es befinden sich keine Bilder in diesem Ordner.</b>";
else{
//...
?>
Mittels glob werden alle Bilder aus dem Ordner $dir = 'bilder/'; mit den Endungen .gif, .jpg und .jpeg ermittelt. Dann wird geprüft, ob wirklich Bilder gefunden wurden.
Anmerkung
Diese Beschreibung bezieht sich hauptsächlich auf die Seitenzahlen! Das Script sollte nicht so als Galerie verwendet werden, da das Auslesen der Bilder nicht ganz so einfach funktioniert, da vor glob auf manchen System case-sensitiv ist, also zwischen Groß- und Kleinschreibung unterscheidet. Desweiteren müsste vor der Verwendung von glob geprüft werden, ob der Ordner vorhanden ist und sich darin auch Bilder befinden, da es sonst auf manchen Systemen zu Fehlermeldungen kommen kann.
Sind Bilder vorhanden, wird wie bei eine kleine Konfiguration vorgenommen
PHP:
<?php
//...
else{
$spalten = 3;
$reihen = 4;
$pro_seite = $spalten*$reihen;
$seiten = ceil($anzahl/$pro_seite);
$start = isset($_GET['seite'])?(int)$_GET['seite']:1;
if ($start < 1)
$start = 1;
if ($start > $seiten)
$start = $seiten;
//...
}
?>
$spalten gibt an, wie viele Bilder in einer Reihe (horizontal) gezeigt werden
$reihen gibt an, wie viele Bilder in einer Reihe (vertikal) gezeigt werden
$pro_seite ist davon abhängig und enthält die Gesamtzahl der Bilder pro Seite also im Beispiel 4*3 = 12 Bilder
$start funktioniert genauso wie im Datenbankbeispiel erklärt
Nun folgt die Anzeige der Seitenzahlen. Das ist an sich auch das gleiche wie zuvor, mit dem Unterschied, dass ich die Anzahl-pro-Seite fest vorgebe und diesen Parameter deshalb nicht mitsenden muss
PHP:
<?php
echo "<table>\n";
echo " <tr>\n";
echo " <td style=\"width:50px;\">\n";
echo "Seite: \n";
echo " </td>\n";
echo " <td style=\"text-align:left\">\n";
if ($start != 1)
echo "<a href=\"bilder.php?seite=".($start-1)."\">lt;</a> \n";
for($i=1; $i<=$seiten; $i++) {
if ($i==$start)
echo $i."\n";
else
echo "<a href=\"bilder.php?seite=".$i."\">".$i."</a>\n";
}
if ($start != $seiten)
echo " <a href=\"bilder.php?seite=".($start+1)."\" style=\"text-decoration:underline;\">></a> \n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
?>
So, dann kommt noch der etwas interessantere Teil des Bilderausgebens
PHP:
<?php
$offset = ($start-1)*$pro_seite;
echo "<table>\n";
// horizontale Ausrichtung
for($i=0; $i<$reihen; $i++) {
echo " <tr>\n";
// vertikale Ausrichtung
for($j=0; $j<$spalten; $j++) {
echo " <td>\n";
// Prüfen, ob der Bild-Index auch existiert
if(isset($bilder[$offset]))
echo "<img src=\"".$bilder[$offset]."\">\n";
else
echo " ";
echo " </td>\n";
// Bild-Index erhöhen
$offset++;
}
echo " </tr>\n";
}
echo "</table>\n";
?>
Auch hier lege ich wieder einen $offset fest, allerdings enthält dieser nun den Array-Index des auszugebenden Bildes. Ein Array beginnt bei '0', deshalb rechne ich wieder -1. Der Offset gibt in diesem Fall den Index des ersten Bildes der Seite an, die restlichen Bilder werden durch die Schleifen ermittelt. Nach jedem Schleifendurchlauf der vertikalen Ausrichtung
PHP:
<?php
for($j=0; $j<$spalten; $j++) {
echo " <td>\n";
// Prüfen, ob der Bild-Index auch existiert
if(isset($bilder[$offset]))
echo "<img src=\"".$bilder[$offset]."\">\n";
else
echo " ";
echo " </td>\n";
// Bild-Index erhöhen
$offset++;
}
?>
wird der Index erhöht und weil es dabei auf der letzten Seite vorkommen kann, dass der Index einen Wert annimmt, der nicht im Array als Schlüssel existiert, muss immer geprüft werden, ob auch ein Bild mit diesem Schlüssel existiert.
Zurück zur vorigen Seite:
PHP Blätterfunktion - Gliederung in Seiten Weiter zur nächsten Seite:
PHP Blätterfunktion - Texte aufteilen