Loading...   Upload Image

Bildverzeichnis ausgeben mit BlaetterfunktionTutorials » PHP/MySQL Tutorials » Bildverzeichnis ausgeben mit Blaetterfunktion

Verfasst von Alice am 25.02.2008 - wurde schon 14105 mal gelesen

Kategorie: PHP/MySQL
Bewertung:
18x bewertet
Schwierigkeit: mittel
Kommentare: [ 29 ]

Tag - Schlagwort Blaetterfunktion Tag - Schlagwort PHP Tag - Schlagwort Verzeichnis

Bildverzeichnis ausgeben mit Blaetterfunktion - Tutorial

Irgendwer hatte mich gefragt wie man ein Verzeichnis ausliest
und dieses dann auch ausgeben kann.

Hier moechte ich euch nun also zeigen, wie man ein Ordner,
der Bilder enthaelt auslesen und Seitenweise ausgeben kann ...

Wozu braucht man sowas?

Mann kann z.B. damit prima Icons ausgeben lassen,
oder Signaturen oder was weiss ich was, Grafik eben ...

Hier kann das Script in Aktion betrachtet werden...

Zuerst einmal folgt der komplette Code,
der ist, meiner Meinung nach, eigentlich recht gut auskommentiert,
eine kleine Erklaerung folgt unten trotzdem nochmals ...

<?php

$ur = $_SERVER['script_name']; // Dateipfad

// Seitenzahl ermitteln
$go = (!empty($_GET['go'])) ? $_GET['go'] : 1;
// -> wenn keine Seitenzahl angegeben wird, dann ist es die erste Seite

// ---------------------- Konfiguration -------------------------------------------

$anzeige = 1;         		// Zahl der Grafiken die pro Seite angezeigt werden sollen  
$p = 2;   			// Anzahl der Links die auf der Seite angezeigt werden sollen
$verzeichnis = "images";        // Verzeichnisbestimmung fuer die Bildausgabe

// ---------------------------------------------------------------------------------

$oeffnen = opendir($verzeichnis);	// oeffnet das angegebene Verzeichnis

//Dateien aus Ordner auslesen
while ($file = readdir ($oeffnen)) { 
 
	// Thumbs ausschliessen
	if ($file != "." && $file != ".." && $file != "Thumbs.db" && preg_match("/\./",$file)){

		$array[] = $file; // Die Dateien aus dem Ordner werden in ein array gepackt
	}
}

closedir($oeffnen); 		// Schliet den Ordner wieder
sort($array); 			// Sortiert das $array

foreach($array as $file) { 	// Hier wird das $array auseindander genommen

	$dateienanzahl++;  

	if($dateienanzahl<=$anzeige*$go && $dateienanzahl>$anzeige*($go-1)){
        
            // nur dass aus, was hinter dem .Punkt steht
	    $punkt = strrchr($file, '.');
	    //Dateiendung herausfiltern
	    $title = str_replace($punkt, '', $file);
	    
	    // Grafik ausgeben
            echo "<img src=\"$verzeichnis/$file\" title=\"$title\"  alt=\"$title\"/>\n";
    }
        
}

// ---------------------------------- Seitennavigation definieren ---------------------

$pages = ceil($dateienanzahl / $anzeige); // Anzahl der Seiten ermitteln

// korrigieren der aktuellen Seite
if(empty($_GET['go'])) {
    $go = 1;
} elseif($_GET['go'] <= 0 || $_GET['go'] > $pages) {
    $go = 1;
} else {
    $go = $_GET['go'];
}

// Linkkette
$links = array();

if(($go - $p) < 1){          
  $prevOffset = $go - 1;      
}else {          
  $prevOffset = $p;      
}            
if(($go + $p) > $pages) {          
  $nextOffset = $pages - $go;      
}else {          
  $nextOffset = $p;      
}          
$off = ($go - $prevOffset);    
                
if ($go- $prevOffset > 1){          
	$first = 1;
    $links[] = "<a href=\"$url?go=$first\" title=\"Zur ersten Seite springen\">&laquo; Erste ...</a>\n";      
}      
if($go != 1){          
    $prev = $go-1;
    $links[] = "<a href=\"$url?go=$prev\" title=\"Zurueck zur letzen Seite\"> &laquo;</a>\n";     
}   
       
for($i = $off; $i <= ($go + $nextOffset); $i++){  
  if ($i != $go){              
        $links[] = "<a href=\"$url?go=$i\" title=\"Seite $i anzeigen\">$i</a>\n";
  }elseif($i == $pages) {              
        // aktuelle Seite, braucht keinen Link
        $links[] = "<span class=\"current\">[ $i ]</span>\n";  
        }          
  elseif($i == $go){              
        // aktuelle Seite, braucht keinen Link
        $links[] = "<span class=\"current\">[ $i ]</span>\n";  
        }      
}                
if($go != $pages){          
    $next = $go+1;
    $links[] = "<a href=\"$url?go=$next\" title=\"Weiter zur naechsten Seite\"> &raquo; </a>\n";
}      

if ($off+$prevOffset*2 < $pages){          
    // zur letzen Seite springen
    $last = $pages;
    $links[] = "<a href=\"$url?go=$last\" title=\"Zur letzen Seite springen\">... Letzte &raquo;</a>\n";
}      


// Alle Links in einen String packen
$link_string = implode(" &nbsp; ", $links); 

 echo "<div class=\"navigation\">\n";

 echo "<span class=\"pages\">Seite $go von $pages</span>\n";

 echo $link_string; // Ausgabe der Seitennavigation
 
 echo "</div>\n";

?>


Zuerst wird gerpueft auf welcher Seite wir uns gerade befinden,
wenn nichts per $_GET['go'] uebergeben wird,
dann befinden wir uns auf der ersten Seite.

In der Kofiguration bestimmt die Variable $anzeige wie viele Grafiken pro Seite angezeigt werden sollen,
diese Zahl ist ggf. anzupassen
Die Variable $p bestimmt wie viele Links in der Seitennavigation ausgegeben werden sollen, auch diese Zahl muss ggf. angepasst werden ...
In der Variable $verzeichnis wird der Ordner, in dem sich die Bilder befinden, angegeben.

Mit $oeffnen = opendir($verzeichnis); oeffnen wir den Ordner, welcher in der Variablen $verzeichnis angegeben wurde.

In der Whileschleife wird das Verzeichnis ausgelesen und dann die Daten in ein Array gesteckt,
Thumbs.db Dateien, die Windows automatisch immer anlegt, werden dabei ausser Acht gelassen.

closedir($oeffnen); schliesst nun den Ordner wieder

Mit sort($array); Sortieren wir nun das Array aufsteigend vom niedrigsten zum hoechsten Wert...

Wer es lieber vom hoechsten zum niedrigsten Wert haben moechte, der muss anstatt sort($array); hier einfach rsort($array); verwenden!

Die foreach-Schleifeforeach($array as $file) ist dazu da, um das Array zu durchlaufen/auseinanderzunehmen und dann den Inhalt wiederzugeben

Als naechstes wird die Seitennavigation definiert,
mit $pages = ceil($dateienanzahl / $anzeige); wird die Anzahl der zu generierenden Seiten berechnet.

Die If-Else Konstruktion korrigiert die Nummer der aktuellen Seite,
so dass die erste Seite auch wirklich als erste angezeigt wird.

Mit der Variblen $links wird ein Array eingeleitet, die Variable $url ist fuer die URL ausgabe entscheident, sie gibt den aktuellen Dateinamen wieder.

Die naechsten If-Else Konstruktionen sind fuer die Definierung der Seitennavigation zustaendig,
es wird geprueft welche die aktuelle Seite ist, fuer diese wird dann kein Link generiert ...
Es wird ueberprueft ob ein Link zur Ersten / Letzen Seite ausgegeben werden muss und/oder
ob ein Weiterblaettern-Link ausreicht.

In der Variablen $link_string wird das Ganze dann in einen String verpackt ...
Danach wird die Anzahl der vorhandenen Seiten ausgegeben sowie die Aktuelle Seite und
dann wird letztendlich die Seitennavigation ausgegeben ...

Tutorialdateien herunterladen

Kommentar schreibenHinterlasse einen Kommentar

Du musst angemeldet sein, um einen Kommentar zu hinterlassen...

Du bist noch kein Mitglied von Alice-Grafixx.de?
Dann kannst du dich hier kostenlos registrieren ...


       ALL-INKL.COM - Webhosting Server Hosting Domain Provider