PHP Tutorials, PHP lernen, PHP Forum, PHP Community and more ... MyWebsolution.de!

Sidebar

Home News Tutorials Workshops Tipps Artikel Gästebuch Sitemap Pascal Landau

Suche

Members

Forum Login Registrierung

Statistik

Statistikbereich
Jetzt1
Heute48
Gestern302
Gesamt2325776

PHP Blätterfunktion - Eine Bildergalerie

Autor Flitze
Klicks 79263
Rating für PHP Blätterfunktion
  7.4 von 10
Bewertungen45
Stand 08.07.2010
Keywords:
Text in Seiten einteilen, Seiten blättern, [page]-Tags, Bildergalerie, Seitenzahlen, Bilder in Seiten einteilen

Amazon: PHP 5.3 und MySQL 5.1
Breadcrumb:
Tutorials » PHP Blätterfunktion » PHP Blätterfunktion - Eine Bildergalerie
Seite : 1 2 3 4 Bewerten
Article Wizard - deutscher Article Spinner

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($bilderglob($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>&nbsp\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 
"&nbsp<a href=\"bilder.php?seite=".($start+1)."\" style=\"text-decoration:underline;\">&gt;</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 
"&nbsp";
            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 
"&nbsp";
            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

»» Zurück zum Menu

Suchmaschinenoptimierung

Suchmaschinenoptimierung (SEO - Search Engine Optimization)

Ranking

Tutorials (13)

8.6
8.4
8

Workshops (3)

8.8
8.7
7.6

Tipps (12)

7.2
6.7
6.5

Artikel (32)

8.4
8
7.2

RSS Feeds

Full Feed Tutorials Workshops Tipps Artikel

Twitter

Follow me on Twitter

Partner & Links


Valid HTML 4.01 Transitional
Valid CSS
nach oben

Diese Seiten unterstützen MyWebsolution:
 
© MyWebsolution.de
2006-2024