• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

PHP und Java in einem???

Leinberger

New member
Hallo,
ich lese mit Hilfe von Php einen Ordner aus und zeige in einem IFrame den Inhalt an (Bilder). Mit Klick auf ein Bild ändert sich in einem anderen IFrame das Image. Bis hierher funktioniert das Ganze schon. Jetzt möchte ich aber mittels Javascript zwei IFrames tauschen, in dem einem das Image, in dem anderen eine html.-Datei. Doch jetzt bin ich am Ende. php bringt mir eine Fehlermeldung, wahrscheinlich kann php in dem Javascript nicht ermittelt werden. Kann mir bitte jemand helfen?? DANKE!

CODE:

<script type="text/javascript">
<!--
function austausch(URL1,F1,URL2,F2){Frame1=eval("parent."+F1);Frame2=eval("parent."+F2);Frame1.location.href=URL1;Frame2.location.href=URL2;}//-->
</script>
</head>
<body>
<?php
// Galerie anzeigen
{
$bilder = glob( "images/*.jpg" );
natsort( $bilder );
foreach ($bilder as $bild)
{
$bild = array_pop( explode( "/", $bild ) );

echo '<a href="javascript:austausch('images/' .urlencode( $bild ). ','hauptframe',' .urlencode( $bild.html ). ','texte')"> />  </a>';
}
}
?>
 
Hallo Leinberger,

meinst du etwas in dieser Art:

HTML:
<html>
<head>
<script type="text/javascript">

function changeContent(id1, id2)
{
	var frame1 = document.getElementById(id1);
	var frame2 = document.getElementById(id2);
	var temp = frame2.src;
	frame2.src = frame1.src;
	frame1.src = temp;
}

</script>
</head>
<body>
<iframe id="myFrame01" src="http://domain01.blabla"></iframe>
<iframe id="myFrame02" src="http://domain02.blabla"></iframe>
<a href="javascript: void(0);" onClick="javascript: changeContent('myFrame01', 'myFrame02');">Inhalt wechseln</a>
</body>
</html>
 
Ahh... ich glaube langsam verstehe ich die Aufgabenstellung:

Im ersten Iframe ist eine Bildgalerie. Wenn jetzt auf ein Bild geklickt wird, dann soll anstelle der Galerie das ausgewählte Bild erscheinen. Und im zweiten IFrame soll die dazugehörende Beschreibung angezeigt werden. Ist das richtig so?
Wenn ja, dann gibt es eine sehr einfache Lösung ;) .
 
Also, es gibt eigentlich 3 Iframes.
Im einen werden die Bilder zur Auswahl in Kleinformat dargestellt, klickt man nun auf ein Bild, wird dieses Bild in groß im zweiten Frame dargestellt und ein möglicher Text dazu im dritten Frame angezeigt werden. Das hat den Grund, damit sehr einfach Bilder hochgeladen werden können und weder extra Seiten erzeugt werden müssen. Wenn nun eben eine Beschreibung zum Bild erscheinen soll, ist diese in einer sehr einfachen html Datei einzutragen und wird angezeigt. Deshalb lese ich die Bilder mit php aus dem ordner, zeige alle im ersten Frame an.
 
Dieser Befehl .urlencode( $bild ). steht normalerweise im href und funktioniert auch, jedoch eben nicht wenn ich durch den href per javascript zwei frames tauschen möchte. Wahrscheinlich muss im javascript nur dieser php Code irgendwie kenntlich gemacht werden.
 
Hier ist ein möglicher Lösungsansatz:

Im ersten IFrame befindet sich die Bildergallerie. Die anderen beiden IFrames sind zunächst leer, da noch kein Bild angeklickt worden ist.

HTML:
<iframe id="myGallery" src="http://domain.blabla/myGallery.php"></iframe>
<iframe id="myPicture" src="about: blank"></iframe>
<iframe id="myDescription" src="about: blank"></iframe>

Der HTML Code von 'myGallery.php' könnte (stark vereinfacht) so aussehen:
HTML:
<html>
<head>
<script type="text/javascript">

function showPicture(id)
{
	var iframe2 = parent.document.getElementById('myPicture');
	if (iframe2) iframe2.src = 'http://domain.blabla/myPicture.php?id=' + id;
	var iframe3 = parent.document.getElementById('myDescription');
	if (iframe3) iframe3.src = 'http://domain.blabla/myDescription.php?id=' + id;
}

</script>
</head>
<body>
<img src="bild01.jpg" onClick="showPicture(1);" />
<img src="bild02.jpg" onClick="showPicture(2);" />
<img src="bild03.jpg" onClick="showPicture(3);" />
</body>
</html>

Die js-Funktion 'showPicture()' führt die php-Skripte 'myPicture.php' im zweiten IFrame und 'myDescription.php' im dritten IFrame aus. Beide Skripte erhalten die Bild-Id als GET-Parameter und liefern die passende Inhalte zurück.
 
Zuletzt bearbeitet:
Hallo nochmal,
also, wie ich es sehe muss ich dann trotzdem jedes Bild angeben. Genau das wollte ich ja nicht. Mein bisheriges Script arbeitet automatisch alle Dateien in einem Ordner ab und zeigt diese an. Wird ein neues Bild hochgeladen, wird dieses sofort sichtbar, ohne etwas an den Seiten ändern zu müssen. Das mit der ID ist glaube ich ein guter ansatz. Danke trotzdem.
 
denke doch, oder. Der Thread nennt sich Java, PHP ...
und die Frage bezieht sich auf beides in einem.
Du denkst Java wäre nur die Kurzform von Javascript, in Wirklichkeit sind dies zwei völlig verschiedene Dinge. Demzufolge trifft nur die Hälfte des Threadtitels zu, die andere Hälfte verwirrt und leitet in die Irre, denn hier geht es kein Strich um Java.
 
Hallo nochmal,
also, wie ich es sehe muss ich dann trotzdem jedes Bild angeben. Genau das wollte ich ja nicht. Mein bisheriges Script arbeitet automatisch alle Dateien in einem Ordner ab und zeigt diese an. Wird ein neues Bild hochgeladen, wird dieses sofort sichtbar, ohne etwas an den Seiten ändern zu müssen. Das mit der ID ist glaube ich ein guter ansatz. Danke trotzdem.

Könnte es sein, dass du serverseitige (PHP) und clientseitige (Javascript) Programmierung etwas durcheinander bringst? :icon7:
Jedes Bild, das im Webbrowser angezeigt werden soll, muss auch angegeben werden. D.h. zumindest die Bild-URL muss dem Browser bekannt sein.
Einfach ausgedrückt: PHP macht nichts anderes, als dem Browser HTML- und JS-Code zu schicken. Und falls sich etwas auf dem Server ändert (z.B. ein neuer Bildupload), dann erscheint das neue Bild nicht 'automatisch' im Webbrowser. Der Browser muss zuerst einen 'Request' schicken (z.B durch Page-Reload oder mit Ajax), um zu erfragen, ob sich der Zustand auf dem Server geändert hat.
 
@Curtains:

Ja, das schon. Aber es funktioniert ohne eben eine Änderung in den HTML-Seiten zu machen. PHP ersetzt auch das Bild im iframe durch einen klick auf das Bild in der Galerie. Nun soll eben php auch die seite der Beschreibung im anderen iframe ändern.
 
Technisch betrachtet wird beim Klick auf ein Galerie-Bild das Hauptframe neu geladen. Und zwar in diesem Fall mit dieser Bild-URL.

Wenn du jetzt den href-Teil von

HTML:
<a align="center" href="images/1.jpg" target="hauptframe">
  <img align="middle" border=0 weight=100 height=75 src="images/1.jpg" />
</a>

auf

HTML:
<a align="center" href="http://www.google.de" target="hauptframe">
  <img align="middle" border=0 weight=100 height=75 src="images/1.jpg" />
</a>

änderst, dann wird die Google Startseite beim Klick auf das Bild im Hauptframe geladen.
Anstelle von Google könntest du jetzt auch die URL von einer deiner eigenen HTML-Seiten nehmen. Und wenn auf dieser Seite jetzt auch noch das (grosse) Bild und die Bildbeschreibung dargestellt werden, dann braucht es gar kein mittleres IFrame mehr.
 
Hallo zusammen,
wollte mich bedanken für Eure Unterstützung. Dieser Code ist nun das Ergebnis von EURER Hilfe. Es funzt jetzt. DANKE

HTML:
<head>
<link rel="stylesheet" href="../../_css/bilderframe.css" type="text/css">
</head>
<body>
<script language="JavaScript">
function ladeGallerieBild( sBildname ,bBeschreibung) 
{ 
parent.frames["hauptframe"].document.getElementsByTagName("img")[0].src
= "/galerie3/images/" + sBildname;
if (bBeschreibung == "true") 
{
parent.frames["bildbeschreibung"].document.location.href="/galerie3/_beschreibungen/"
+ sBildname + ".html";
} 
else 
{
parent.frames["bildbeschreibung"].document.location.href="/galerie3/_beschreibungen/leer.html";
}
}
</script>

<table border="0" cellspacing="1">
<tr>
<td>
<?php
// Galerie anzeigen
{
	$bilder = glob( "images/*.jpg" );
	natsort( $bilder );
	foreach ($bilder as $bild)
		{
			$bild = array_pop( explode( "/", $bild ) );
			$file = dirname(__FILE__)."/_beschreibungen/".$bild.".html";
			if  (file_exists($file)) 
				{
					$bBeschreibung = "true"; 
				} 
				else 
				{ 
					$bBeschreibung = "false"; 
				} 
			echo '<a href="#" onClick="ladeGallerieBild(\'' .urlencode( $bild ). '\',\''. $bBeschreibung .'\')"><img border=0 weight=100 height=75 src="images/' .$bild. '" /></a> '; 
		} 
} 

?>
</td> 
</tr> 
</table> 
</body>
 
Zurück
Oben