Immer noch bildwechsel php mit bild-zählstatistik onclick
carola (isiway)
- php
Hallo,
ich hätte gern meine antwort auf den alten tread geschrieben, aber ich finde den antwort-button einfach nicht...
http://forum.de.selfhtml.org/?t=144987&m=940698
ich hoffe, dass ihr mich jetzt nicht völlig verstoßt...
Also, die Aufgabe war, das grosse Bild im parentframe zu tauschen und die klicks auf die kleinen bilder zu zaehlen. Das hatte ich im javascript versucht, und da ging es nicht...
Ich habe alle hinweise gelesen und alles mögliche ausprobiert, aber es klappt einfach nicht !!!! Ganz unten ist mein original-code.
Zitat des Lösungsansatzes:
Gemeint ist, dass du das Bild wie bisher über <img> oder Javascript oder wie auch immer du willst ganz normal einbindest, aber auf dem Server mitzählst, wenn das Bild geladen wurde. Das kann entweder über die Log-Dateien geschehen, oder manuell über z.B. eine gibBild.php, welche du dann anstelle des Bildes einbindest.
Beispiel: <img src="gibBild.php?bild=blumenwiese.jpg" […]/>
gibBild.php sieht dann etwa so aus:
<?php
// In $_GET["bild"] ist jetzt das angeforderte Bild, z.B. "blumenwiese.jpg"
zählehoch($_GET["bild"]); //Bildaufruf zählen
echo file_get_contents($_GET["bild"]); //Bild ausgeben
?>
Zitatende
Auch wenn ich das wie später diskutiert über readfile mache und den header vorweg schicke klappt es nicht.
Wo genau soll ich denn nun das gibBild.php einbinden? Ich habe es wie oben beschrieben im Javascript versucht,
parent.document.getElementById ('mac').innerHTML="<img src='gibBild.php?’"+welchesbildgross+"' alt=''>";
aber dann durch den Austausch mit dem innerhtml (?) passiert irgendwie nichts bzw. steht dann im Quellcode
<img src=“gibBild.php?bild....“> wird also nicht vorher interpretiert.
Also, bevor ich völlig verzweifle, wäre ich wirklich für weitere Hilfe dankbar!
Hier sind Ausschnitte der Ursprungsdateien mit Bildwechsel.
Index.php (zeigt das grosse bild an)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
<!-- grosses foto anzeigen -->
<p id="mac"><img src="shop/fotos-online/gross/001.jpg" alt="" id="fotogross" name="fotogross"></p>
<!-- NAVIGATION BILDKATEGORIEN und BILDLEISTE UNTEN -->
<iframe src="bildleiste.php" name="iframe-bildleiste" id="iframe-bildleiste" frameborder="0" scrolling="auto">
<p>Ihr Browser kann leider keine eingebetteten Frames anzeigen</p>
</iframe>
</BODY>
</HTML>
bildleiste.php (zeigt alle bilder an und soll das grosse bild auswechseln und klick zaehlen)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">
function showbild (welchesbildgross) {
parent.document.getElementById ('mac').innerHTML="<img src='"+welchesbildgross+"' alt=''>";
}
</script>
</head>
<body>
<table>
<tr>
<td><a onclick="showbild('shop/fotos-online/gross/001.jpg')"><img src="shop/fotos-online/klein/001.jpg"></a></td>
<td><a onclick="showbild('shop/fotos-online/gross/002.jpg')"><img src="shop/fotos-online/klein/002.jpg"></a></td>
</tr>
</table>
</body>
</html>
Anmerkung: Musste über innerhtml tauschen, sonst verzerrte der Mac das Bild, weil er die neue Bildgröße nicht mitbekam.
Gruß und danke
Carola (isiway)
Wo genau soll ich denn nun das gibBild.php einbinden? Ich habe es wie oben beschrieben im Javascript versucht,
parent.document.getElementById ('mac').innerHTML="<img src='gibBild.php?’"+welchesbildgross+"' alt=''>";
aber dann durch den Austausch mit dem innerhtml (?) passiert irgendwie nichts bzw. steht dann im Quellcode
<img src=“gibBild.php?bild....“> wird also nicht vorher interpretiert.
Das soll auch im Quellcode stehen. Es macht für den Browser keinen Unterschied, ob er jetzt <img src="blumenwiese.jpg" […]/> oder <img src="gibBild.php?bild=blumenwiese.jpg" […]/> (oder <img src="hanswurst?heureka" […]/>) lädt, sofern hinter der Adresse ein funktionierendes Bild liegt. Um dein PHP-Script zu testen, kannst du deshalb natürlich auch die gibBild.php mit dem richtigen Parameter manuell aufrufen. Wenn du die Header-Angabe auskommentierst, solltest du auch eventuelle Fehlermeldungen sehen. Wenn alles korrekt ist, müsste dein Bild erscheinen.
Ich würde zum Testen auf alles komplizierte wie das Javascript verzichen und das Bild entweder manuell aufrufen oder per <img> einbinden. So kann man eher das Problem reduzieren und mögliche Fehlerquellen ausschließen.
mfg Jonathan
Wo genau soll ich denn nun das gibBild.php einbinden? Ich habe es wie oben beschrieben im Javascript versucht,
parent.document.getElementById ('mac').innerHTML="<img src='gibBild.php?’"+welchesbildgross+"' alt=''>";
aber dann durch den Austausch mit dem innerhtml (?) passiert irgendwie nichts bzw. steht dann im Quellcode
<img src=“gibBild.php?bild....“> wird also nicht vorher interpretiert.Das soll auch im Quellcode stehen. Es macht für den Browser keinen Unterschied, ob er jetzt <img src="blumenwiese.jpg" […]/> oder <img src="gibBild.php?bild=blumenwiese.jpg" […]/> (oder <img src="hanswurst?heureka" […]/>) lädt, sofern hinter der Adresse ein funktionierendes Bild liegt. Um dein PHP-Script zu testen, kannst du deshalb natürlich auch die gibBild.php mit dem richtigen Parameter manuell aufrufen. Wenn du die Header-Angabe auskommentierst, solltest du auch eventuelle Fehlermeldungen sehen. Wenn alles korrekt ist, müsste dein Bild erscheinen.
Ich würde zum Testen auf alles komplizierte wie das Javascript verzichen und das Bild entweder manuell aufrufen oder per <img> einbinden. So kann man eher das Problem reduzieren und mögliche Fehlerquellen ausschließen.
mfg Jonathan
Hallo Jonathan,
ein Bild bekomme ich angezeigt mit
<img src="gibbild.php?fotono='002.jpg'" />
gibbild.php
<?php
$fotono=$_GET["fotono"]?>
<img src="shop/fotos-online/gross/<?PHP echo $fotono; ?>" />
<?PHP
echo "zaehle hoch"; // das wäre die statistik
?>
Aber, mein Problem ist doch, dass ich dieses bild im parentframe anzeigen muss, und wenn ich das einsetze in
parent.document.getElementById ('mac').innerHTML="<img src='gibbild.php?fotono="+welchesbildgross+"' alt=''>";
wird es nicht ausgeführt...Liegt das an dem innerhtml-austausch?
Gruß und Danke
Carola
hi,
ein Bild bekomme ich angezeigt mit
<img src="gibbild.php?fotono='002.jpg'" />
Das wäre erstaunlich, wenn das
gibbild.php
<?php
$fotono=$_GET["fotono"]?>
<img src="shop/fotos-online/gross/<?PHP echo $fotono; ?>" /><?PHP
echo "zaehle hoch"; // das wäre die statistik
?>
die Ausgabe deines Scriptes darstellen soll?
Wieso bitte
<img src="shop/fotos-online/gross/<?PHP echo $fotono; ?>" />
? Das ist HTML-Code.
Enthalten "normale" Bilddateien HTML-Code?
Dass Prinzip wurde dir doch jetzt mehrfach beschrieben - dein Bilder-Script muss exakt die gleiche Ausgabe an den Client erzeugen, wie es der Server auch tun würde, wenn einfach ein "echtes" Bild angefordert würde - also: Entsprechender Content-Type-Header, und die binären Bilddaten hinterher. Kein HTML in dieser Serverantwort, kein sonstiger Quark.
gruß,
wahsaga
ein Bild bekomme ich angezeigt mit
<img src="gibbild.php?fotono='002.jpg'" />
gibbild.php
<?php
$fotono=$_GET["fotono"]?>
<img src="shop/fotos-online/gross/<?PHP echo $fotono; ?>" /><?PHP
echo "zaehle hoch"; // das wäre die statistik
?>
So war das nicht gedacht. Dein PHP-Script soll (nur) den "binären" Inhalt der Bilddatei ausgeben. Kein <img> und schon gar kein "zähle hoch" (auch wenn das sicher nur ein Test war). Der Browser muss/soll/darf später gar nicht mehr wissen, wo das Original-Bild liegt. Das speicherst du dann evtl. besser sogar an einem Ort ab, wo ein Browser so nicht hinkommt.
parent.document.getElementById ('mac').innerHTML="<img src='gibbild.php?fotono="+welchesbildgross+"' alt=''>";
wird es nicht ausgeführt...
Hätte mich gewundert, wenn das ausgeführt würde. Deine Anführungszeichen sind total merkwürdig gesetzt.
Hätte mich gewundert, wenn das ausgeführt würde. Deine Anführungszeichen sind total merkwürdig gesetzt.
Nach 5-maligem hinsehen scheinen die Anführungszeichen doch korrekt zu sein.
Bessser und übersichtlicher wäre es wahrscheinlich trotzdem wenn du einem (vorher über CreateElement erstelltes) <img> einfach ein neues src zuweist.