SlideShow und PHP

Tucker

Erfahrenes Mitglied
Ich wunsste nun nicht, ob das nun in die anderen Threads so passt, wenn ich hier eine serverseitige und eine clientseitige Programmiersprache verknüpfe. Also ich habe folgendes Problem. Ich bastle zur Zeit an einer Bildergallerie. Diese unterteilt sich in 3 Ansichten:
  • Kategorieauswahl
  • Gallerieauswahl (Hier soll eine SlideShow aller vorhandenen Thumbnails rein)
  • Bilderansicht

Nun zum Problem mit der SlideShow. Ich habe kaum Ahnung von JavaScript, also habe ich ein vorgefertigtes Script aus dem Dreamweaver genommen:

Code:
 <script language="JavaScript"> 
// BODY Example:
// <body onLoad="mySlideShow1.play(); mySlideShow2.play();">
// <img src="originalImage1.gif" name="slide1">
// <img src="originalImage2.gif" name="slide2">
//
// SCRIPT Example:
// var mySlideList1 = ['image1.gif', 'image2.gif', 'image3.gif'];
// var mySlideShow1 = new SlideShow(mySlideList1, 'slide1', 3000, "mySlideShow1");
// var mySlideList2 = ['image4.gif', 'image5.gif', 'image6.gif'];
// var mySlideShow2 = new SlideShow(mySlideList2, 'slide2', 1000, "mySlideShow2");

{sliedlist}
{slideshow}

function SlideShow(slideList, image, speed, name)          
{
  this.slideList = slideList;
  this.image = image;
  this.speed = speed;
  this.name = name;
  this.current = 0;
  this.timer = 0;
}
SlideShow.prototype.play = SlideShow_play;  
function SlideShow_play()       
{
  with(this)
  {
    if(current++ == slideList.length-1) current = 0;
    switchImage(image, slideList[current]);
    clearTimeout(timer);
    timer = setTimeout(name+'.play()', speed);
  }
}
</script>

Die Beiden Platzhalter {slideshow} und {slidelist} ersetz ich mit PHP bzw. folgendem Script:
PHP:
$javascript=implode("", file("js/dia_show.txt"));
		
		$sql="SELECT * FROM `ssv_gallerie_gallerien` WHERE `kategorie_id` = '".$_GET["kategorie"]."'";
		$erg=mysql_query($sql);
		
		while ($daten[] = mysql_fetch_array($erg))
		{
		}
		
		for ($i = 0 ; $i < mysql_num_rows($erg) ; $i ++)
		{
			$sql="SELECT * FROM `ssv_gallerie_bilder` WHERE `gallerie_id` = '".$daten[$i]["id"]."'";
			$ergebnis=mysql_query($sql);
			
			while($thumbnails[] = mysql_fetch_array($ergebnis))
			{
			}
			
			for ($z = 0 ; $z < mysql_num_rows($ergebnis) ; $z++)
			{
				$bilder[]="'gallerie/".$thumbnails[$z]["thumbnail"]."'";
			}
			
			$bild= implode(",", $bilder);
			
			$slidelist[]='var mySlideList'.($i+1).' = ['.$bild.'];';
			$name='slide'.($i+1);
			$slideshow[]='var mySlideShow'.($i+1).' = new SlideShow(mySlideList'.($i+1).', \''.$name.'\' , 3000, "mySlideShow"'.($i+1).'");';
			
			$onLoad[]="mySlideShow".($i+1).".play()";	
			unset($bild);
		}
		if (mysql_num_rows($erg) >= 1)
		{
			$onLoad=implode("; ", $onLoad).";"; // wird in <body onLoad=""> eingefügt.
		}
		else
		{
			$onLoad=""; // wird in <body onLoad=""> eingefügt.
		}
		
		$slidelist=implode("", $slidelist);
		$slideshow=implode("", $slideshow);
		
		
		
		echo str_replace("{sliedlist}", $slidelist, str_replace("{slideshow}", $slideshow, $javascript));
		
		unset($daten);

Und wenn ich das nun alles so ausprobiere, da kommt mir eine JS- Fehlermeldung. Aber seht doch am besten selbst: http://www.ssvlommatzsch.de/aktion=ausgabe&pfad=gallerie&kategorie=1
 
Zuletzt bearbeitet:
Und für die Zukunft: Bitte kein PHP im JS-Forum!

Das hat den Grund, 1. nicht jeder JS-ler auch PHP kann und zweitens nicht jeder JS-ler die Lust hat sich durch einen Wust von escapten Anführungszeichen zu arbeiten, bevor er zum eigentlich Problem kommt. Außerdem sorgt das auch dafür, dass du dich mit deinem Problem eingehnder beschäftigst und so vielleicht merkst, dass es gar kein JS-Problem ist. Also in Zukunft bitte die HTML-Ausgabe, wie sie im Browser unter "View Source" (oder so ähnlich) steht. Danke!

Es scheint nämlich kein JS-Fehler drin zu sein - ich hab jedenfalls auch keinen gesehen. Bei sowas gibt die JS-Konsoles des Browsers deiner Wahl übrigens auch Fehlermeldungen aus...;)
 

Neue Beiträge

Zurück