• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Script mehrmals in der selben Datei verwenden

Status
Für weitere Antworten geschlossen.

andy-1988

Neues Mitglied
Hallo!

Ich habe folgendes Problem:
Ich benutze ein Script, dass die Dateien aus einem Ordner ausliest, überprüft ob ein Thumb ordner vorhanden ist, falls dies nicht der fall sein sollte legt es den Order an, erstellt die Thumbs und gibt daraufhin die Links zu den originalbildern aus.
Nun möchte ich dieses Script in eine Seite einbinden in der Einsätzte (Feuerwehr) aufgelistet werden. Und zu einzelnen einsätzen eben bilder mit ausgeben. Mein problem hierbei ist, dass ich immer die Fehlermeldung "Fatal error: Cannot redeclare createthumb() (previously declared in D:\xampp\htdocs\einsaetze\2006.php:77) in D:\xampp\htdocs\einsaetze\2006.php on line 191" bekomme.
Hat jemand eine idee wie ich dieses Script mehrmals in die selbe datei einbinden kann (mit verschiedenen ordnerangaben in denen sich die Bilder befinden) ohne dass dieser Fehler auftritt???

Hier noch mal das Scritp:

Code:
<?php

  /* ====== Allgemeine Einstellungen ====== */

  # Pfad zu den Bildern
  $imagePath = $_SERVER['DOCUMENT_ROOT'].'/einsaetze/2006/01/';

  # Verzeichniss für die Thumbnails
  $thumbDir = 'thumbs/';

  # Realtiver Pfad zu den Bildern von diesem Script aus
  $imageRelPath = '2006/01/';

  # Breite der Thumbnails
  $breite = 160;

  # Qualität der Thumbnailss
  $quality = 85;

  # Beim nächsten Durchlauf die Thumbs neu erstellen??
  $createNew = 0;

  /* ====== Allgemeine Einstellungen ====== */

  # Kompletter Thumb Pfad bauen
  $thumbPath = $imagePath . $thumbDir;

  # Prüfen ob Thumb Verzeichniss existiert. Wenn nicht, anlegen!
  if(!is_dir($thumbPath)) {
  	mkdir($thumbPath , 0755);
  }

  # Bilderverzeichniss öffnen
  $handle=opendir($imagePath);

  # und Schleife für jeden Eintrag im Verzeichniss durchlaufen
  while ($file = readdir($handle))
  {
  	# Das Thumb Verzeichniss sowie . und .. rausfiltern
  	if ($file != "." && $file != ".." && $file != str_replace('/','',$thumbDir)) {
			
  			# Alle Dateien in ein Array speichern
  			$imageArr[] = $file;
  	}
  }
	
  # Die Funktion zum erstellen von Thumbnails aufrufen
  createThumb($imageArr);

  # Danach jedes Bild in einer Schleife mit Link zum grossen Bild ausgeben
  foreach($imageArr as $fileName) {
  	$content.='<a href="' . $imageRelPath . $fileName . '" rel="lightbox[roadtrip]"><img src="' . $imageRelPath . $thumbDir . $fileName . '" border="0"></a> &nbsp;';
  }

  # Ausgabe des HTML Codes
  echo $content;

  # 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);
		  	$newheight=($height/$width)*$breite;
		  	$tmp=imagecreatetruecolor($breite,$newheight);
		  	imagecopyresampled($tmp,$src,0,0,0,0,$breite,$newheight,$width,$height);
	  		imagejpeg($tmp,$thumbPath.$image,$quality);
	  	}
  	}
  }

  ?>
 
um das

PHP:
function createThumb($imageArr) {
    // ... code ...
}

machst du ein

PHP:
if(!function_exists('createThumb')) {
    // ... code ...
}

also so

PHP:
if(!function_exists('createThumb')) {
    function createThumb($imageArr) {
        // ... code ...
    }
}
 
Ein großteil des Scripts funktioniert so schon. Allerdings besteht noch folgendes Problem: Die Bilder des 1. Scriptaufrufs werden beim 2. Scriptaufruf (dass Bilder aus einem anderen ordner einfügen soll) wiederum mit ausgegeben.

einfachheitshalber könnt ihr euch dies hier einmal ansehen: http://www.neu.ffw-moenchsroth.de/einsaetze/2006.php

Kann man dies noch irgendwie ändern?? muss evtl die variabele nach der ausgabe irgendwie gelöscht werden (falls dies überhaupt möglich ist) damit sie neu beschrieben werden kann oder so etwas??? Das ist jetzt einfach mal eine Idee die mir durch den Kopf geht. Weiß nicht ob sie realisierbar ist. Kenn mich in Php dazu viel zu wenig aus, da ich eigentlich nur mit vorgefertigten Scripten arbeite.

hoffe ihr könnt mir helfen.
 
Zuletzt bearbeitet:
Auf die schnelle würde ich einfach mal sagen:

PHP:
if (!$bereits_durchgelaufen) {
 //Die betreffende Stelle hier
 $bereits_durchgelaufen = true;
}

Muss aber gestehen, mich nicht durch deinen Code gefostet zu haben
 
ich bin mal mutig und schiesse nach einem 20 sekunden check :-)

füge oben im script bei den definietionen mal das ein:

PHP:
$imageArr = array();
 
Also mit diesem $imageArr = arry(); klappt es schon mal soweit, dass ich keine "leeren" felder mit irgend einem Link ausgegeben bekomme. Allerdings werden mir die Bilder, die beim ersten script auf der Seite ausgegeben wurden, auch nocheinaml beim zweiten script (weiter unten) auf der Seite mit ausgegen. Mein Problem ist somit also noch nicht vollständig gelöst.

Hätte auch gern die Lösung von CGollhardt mal ausprobiert aber ich weiß nicht genau wo ich seinen Code genau hinpacken muss. Hab schon etwas rumprobiert aber war nicht erfolgreich.


PROBLEM GELÖST!!!!!
Musste nun nur noch die variable $content = "" setzten. DAnke für eure bemühungen!
 
Zuletzt bearbeitet:
An der Stelle, wo in deinem Script die Bilder ausgegeben werden, soweit wie ich sehe bei echo $content;

PHP:
if (!$bereits_durchgelaufen) {
echo $content;
$bereits_durchgelaufen = true;
}
 
Status
Für weitere Antworten geschlossen.

Neueste Beiträge

Zurück
Oben