Hallo, Ich habe hier ein Script für ein Online-Fotoalbum.
Infos:
- Blätterfunktion
- Man ladet Bilder hoch, von denen dann automatisch Thumbs erstellt und angezeigt werden mit Link auf das jeweilige (große) Original-Bild
- Das Script hat einen vordefinierten Ordner:
- images <- Hier ladet man die großen Original-Bilder hoch
- images/thumbs <- Hier werden die Thumbs hingespeichert
Funktioniert auch alles wunderbar. Jetzt möchte ich aber dass das Script ohne vordefinierten Ordner arbeitet. Ich möchte mehrere Ordner erstellen und in den jeweiligen Ordnern Bilder hochladen. Das Script soll also erkennen welche Ordner vorhanden sind und NUR die Bilder (Thumbs) anzeigen die in diesem Ordner sind. Ein Fotoalbum mit Unter-Fotoalben so zu sagen
Hier das Script:
PHP-Code:
# Pfad zu den Bildern
$imagePath = $_SERVER['DOCUMENT_ROOT'].'de/images/';
// Seitenzahl ermitteln
$go = (!empty($_GET['go'])) ? $_GET['go'] : 1;
$anzeige = 9; // Zahl der Grafiken die pro Seite angezeigt werden sollen
$p = 2; // Anzahl der Links die auf der Seite angezeigt werden sollen
$verzeichnis = "images/thumbs"; // Verzeichnisbestimmung fuer die Bildausgabe
$verzeichnis2 = "images/";
# Verzeichniss für die Thumbnails
$thumbDir = 'thumbs/';
# Realtiver Pfad zu den Bildern von diesem Script aus
$imageRelPath = 'images/';
# Breite der Thumbnails
$breite = 150;
#Hoehe der Thumbnails
$hoehe = 94;
# Qualität der Thumbnails
$quality = 85;
# Beim nächsten Durchlauf die Thumbs neu erstellen??
$createNew = 1;
# Kompletter Thumb Pfad bauen
$thumbPath = $imagePath . $thumbDir;
# Prüfen ob Thumb Verzeichniss existiert. Wenn nicht, anlegen!
if(!is_dir($thumbPath)) {
mkdir($thumbPath, 0777);
}
# Bilderverzeichniss öffnen
$handle=opendir($imagePath);
# und Schleife für jeden Eintrag im Verzeichniss durchlaufen
while ($file2 = readdir($handle))
{
# Das Thumb Verzeichniss sowie . und .. rausfiltern
if ($file2 != "." && $file2 != ".." && $file2 != str_replace('/','',$thumbDir)) {
# Alle Dateien in ein Array speichern
$imageArr[] = $file2;
}
}
# Die Funktion zum erstellen von Thumbnails aufrufen
createThumb($imageArr);
$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); // Schließt 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);
echo "<a href=\"$verzeichnis2/$file\"><img src=\"$verzeichnis/$file\" title=\"$title\" alt=\"$title\"/></a>\n";
}
}
# Die funktion zum erstellen von Thumbnails
function createThumb($imageArr) {
# Variablen in dieser Funktion
global $imagePath, $thumbPath, $breite, $quality, $createNew;
# Schleife mit dem Array der Bilder durchlaufen
foreach($imageArr as $image) {
$fileExists = file_exists($thumbPath.$image);
# Wenn das noch nicht existiert oder die Variable $createNew gesetzt ist wird das thumbnail erstellt
if($createNew != 0 || $fileExists != true ) {
$completePath = $imagePath.$image;
$src = imagecreatefromjpeg($completePath);
list($width,$height)=getimagesize($completePath);
$hoehe=106;
$tmp=imagecreatetruecolor($breite,$hoehe);
imagecopyresampled($tmp,$src,0,0,0,0,$breite,$hoehe,$width,$height);
imagejpeg($tmp,$thumbPath.$image,$quality);
}
}
}
// ---------------------------------- 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();
$url = ($_SERVER['PHP_SELF']);
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\">« Erste ...</a>\n";
}
if($go != 1){
$prev = $go-1;
$links[] = "<a href=\"$url?go=$prev\" title=\"Zurueck zur letzen Seite\"> «</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\"> »</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 »</a>\n";
}
// Alle Links in einen String packen
$link_string = implode(" ", $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";
wär echt nett wenn mir da jemand helfen könnte ich bin am verzweifeln
