Bildwechsel per Button steuern
spice
- php
Hallo
Ich bin mir sicher, dass dieses Problem hier auch schon besprochen wurde. Doch leider haben ich nichts gefunden (vielleicht auch falsch gesucht...). Ich bin mir nicht mal sicher, ob ich hier bei PHP richtig bin, oder ob man es mit JavaScript lösen sollte...
Ich habe eine Seite (index.php), auf der habe ich 2 Bilder. Sagen wir eines heisst Bild1_on.jpg und das andere Bild2_on.jpg.
Jetzt möchte ich gerne einen Adminbereich erstellen und dort soll es 2 Buttons haben, mit welchen ich je ein Bild wechseln kann.
Also z.B.: ich klicke auf der Seite 'admin.php' auf den 'Button1' und dann ändert sich auf der Seite 'index.php' das 'Bild1_on.jpg' in 'Bild1_off.jpg'
Mit dem 'Button2' passiert das selbe mit dem 'Bild2_on.jpg'.
Ich habe hier mal einen Eintrag gefunden und geübt, doch mit dem komme ich nicht so richtig klar ( http://forum.de.selfhtml.org/archiv/2006/10/t137912/ )
Hat mir jemand einen Tip wie ich weiter komme? Oder könnte mir jemand den Ansatzt im oben erwähnten Link genauer erklären.
Vielen Dank und Gruss,
spice
Hallo!
Ich habe hier mal einen Eintrag gefunden und geübt, doch mit dem komme ich nicht so richtig klar ( http://forum.de.selfhtml.org/archiv/2006/10/t137912/ )
Hat mir jemand einen Tip wie ich weiter komme? Oder könnte mir jemand den Ansatzt im oben erwähnten Link genauer erklären.
Der von dir gefundene Beitrag ist doch goldrichtig für dein Problem.
Was genau daran hast du denn nicht verstanden?
Das "System" dahinter ist folgendes:
Damit du nicht jedesmal den Quellcode deiner index.php Datei verändern musst, bindest du dort "fest" immer ein je ein Bild ein.
Damit jetzt aber bei Bedarf dort jeweils ein anderes Bild erscheint, werden die Bilddateien auf dem Server entsprechend umbenannt. Und zwar so, dass
1. keine zwei oder mehr Bilder mit dem selben Namen existieren, und
2. dass jeweils das anzuzeigende Bild den Namen erhält, der in der index.php angegeben ist.
Gruß Gunther
Hallo Gunther
besten dank für deine Ausführungen. Hat geholfen und ich bin ein rechtes Stück weiter. Habe irgendwie zu kopliziert gedacht. Es funktioniert auch mit 2 verschiedenen Bildern einwandfrei.
Folgendes bekomme ich aber nicht so recht hin. Da wäre ich nochmals sehr für Hilfe dankbar.
Wie mache ich es, damit ich nach dem drücken auf den Button auf der Adminseite, auch auf der Adminseite bleibe?
Ich habe den php-code mit dem rename in eine externe Datei gepackt und include diese. Wenn ich mit header(Location) ein redirect mache (in der inc.php datei), bekomme ich immer die fehlermeldung "Cannot modify header information - headers already sent by...." und werde dennoch auf die index.php geleitet.
Ist bestimmt ein peinlicher Fehler, aber ich dreh mich im Kreis.
hier noch mein code:
ADMIN.PHP:
<body>
<p>admin</p>
<a href="../index.php?admin1">on/off_1</a><br />
<a href="../index.php?admin2">on/off_2</a>
</form>
</body>
</html>
--------------------------
INCLUDE: ( header(Location) habe ich rausgenommen )
<?php
$on1='images/on1.jpg';
if (isset($_GET['admin1'])){
if (file_exists($on1)){
rename("images/zeigen1.jpg","images/off1.jpg");
rename("images/on1.jpg","images/zeigen1.jpg");
}else{
rename("images/zeigen1.jpg","images/on1.jpg");
rename("images/off1.jpg","images/zeigen1.jpg");
}
}
$on2='images/on2.jpg';
if (isset($_GET['admin2'])){
if (file_exists($on2)){
rename("images/zeigen2.jpg","images/off2.jpg");
rename("images/on2.jpg","images/zeigen2.jpg");
}else{
rename("images/zeigen2.jpg","images/on2.jpg");
rename("images/off2.jpg","images/zeigen2.jpg");
}
}
?>
---------------------------
INDEX.PHP
<body>
<div>
<?php
include('admin/inc/inc.php');
echo '<img src="images/zeigen1.jpg" />';
echo '<img src="images/zeigen2.jpg" />';
?>
</div>
</body>
</html>
Vielen Dank!
spice
Hallo spice!
Folgendes bekomme ich aber nicht so recht hin. Da wäre ich nochmals sehr für Hilfe dankbar.
Wie mache ich es, damit ich nach dem drücken auf den Button auf der Adminseite, auch auf der Adminseite bleibe?
Na am einfachsten, wenn du das auch in deinen Links so angibst. ;-)
Oder wo dachtest du, dass du mit
<a href="../index.php?admin1">on/off_1</a>
landest?
Ich habe den php-code mit dem rename in eine externe Datei gepackt und include diese. Wenn ich mit header(Location) ein redirect mache (in der inc.php datei),
Wozu denn überhaupt einen Redirect? Der ist nicht nötig.
bekomme ich immer die fehlermeldung "Cannot modify header information - headers already sent by...."
Hast du die Fehlermeldung mal gegoogelt?
Ein Aufruf von header() kann immer nur solange erfolgen, wie noch keine Bildschirmausgabe erfolgt ist. Wenn man die Funktion aus irgendwelchen Gründen nicht direkt am Anfang aufrufen kann, muss man eventuelle Ausgaben solange in den Ausgabepuffer speichern und erst nach der Header-Funktion ausgeben (siehe u.a. ob_start).
Aber wie gesagt - brauchst du nicht.
und werde dennoch auf die index.php geleitet.
Das liegt an deinem Link-Ziel (s.o.).
Du rufst immer nur deine admin.php Seite auf. Über deine Links übermittelst du zusätzlich eine Variable mit einem bestimmten Wert, also z.B. admin.php?bild=1
Nun wertest du am Anfang deiner admin.php diese Variable aus (vorhanden|nicht vorhanden, wenn vorhanden welcher Wert).
Ist diese vorhanden, includest du deine zusätzliche(n) Funktion(en) und rufst diese auf.
Fertig!
Gruß Gunther
Hi,
Der von dir gefundene Beitrag ist doch goldrichtig für dein Problem.
Da habe ich leichte Zweifel.
Das "System" dahinter ist folgendes:
Damit du nicht jedesmal den Quellcode deiner index.php Datei verändern musst, bindest du dort "fest" immer ein je ein Bild ein.Damit jetzt aber bei Bedarf dort jeweils ein anderes Bild erscheint, werden die Bilddateien auf dem Server entsprechend umbenannt.
Dabei wird dir das Caching der Bildressource entweder den Streich spielen, dass du die Aenderung clientseitig normalerweise nicht mitbekommst - oder du musst es komplett abschalten, was ebenfalls ziemlich unsinnig ist.
MfG ChrisB
Hi,
Dabei wird dir das Caching der Bildressource entweder den Streich spielen, dass du die Aenderung clientseitig normalerweise nicht mitbekommst - oder du musst es komplett abschalten, was ebenfalls ziemlich unsinnig ist.
stimmt, daran habe ich gar nicht gedacht. Alternativen?
Dann bliebe ja nichts anderes übrig, als doch jedes Mal den Quelltext der index.php zu verändern? Und wenn man das Image per include einbindet, abhängig von einem entsprechenden Wert (der durch das Script verändert wird)? Sendet der Server dann auch einen 304 Not Modified Header, oder kriegt er die Änderung dann mit?
Gruß Gunther