Mit jedem Refresh ein neues Bild anzeigen

@rootssw

Danke für die schnelle Antwort.
Also das Script gibt mir erstmal keine Fehlermeldung raus, das ist gut:-)
Nicht so gut ist, daß das Bild/Link nicht wechselt. Es bleibt beim ersten Bild/Link hängen, das ist nicht so gut.
@moritz123
Das Script ist der ganze Code. Es gibt vorerst nichts mehr, weil ich es erstmal ausprobieren wollte ob es überhaupt .

Gruß
Armin
 
Das hab' ich auch gerade festgestellt und gemerkt, dass mir in aller Eile ein Fehler unterlaufen ist. :-(
So hat das Ganze dann aber schlussendlich funktioniert:

PHP:
<?php 
$bilder     = array("banner1.gif", 
        "banner2.gif", 
         "banner3.gif", 
         "banner4.gif"); 

$links    =    array("<a href=\"test1.html\">Jo</a>", 
              "<a href=\"test2.html\">Micha</a>", 
                       "<a href=\"test3.html\">Dein Buch</a>", 
                       "<a href=\"test4.html\">Neues vom Markt</a>"); 

if (isset($_COOKIE['zahl']))
{
	$letztesbild = $_COOKIE['zahl'];

   if ($letztesbild == sizeof($bilder) - 1) 
        $neuesbild = 1; 
   else 
        $neuesbild = $letztesbild + 1; 
}
else
{
    //wenn kein Cookie gesetzt, Bild zufällig auswählen 
    mt_srand ((double)microtime()*1000000); 
    $neuesbild = mt_rand(0,(count($bilder1) - 1)); 
}

setcookie ("zahl", $neuesbild); 
echo "<img src=\"".$bilder[$neuesbild]."\"><br>" ; 
echo $links[$neuesbild]; 

?>
 
Hallo rootssw,


eine Frage zu dem fertigen Script, es funktioniert ja so, das die Bilder nacheinander angezeigt werden und mit Cookie auf dem Rechner gespeichert werden, sodass kein Bild doppelt angezeigt wird.

Was ist aber wenn alle Bilder einmal angeziegt wurden, fängt die Reiche dann nicht wieder ganz von vorne nochmal an zu laufen?
gruß
 
Hallo!

Ganz genau das passiert!
Das wird durch folgenden Code erreicht:

PHP:
   if ($letztesbild == sizeof($bilder) - 1) 
        $neuesbild = 0;

Falls das die Nummer des letzten Bildes, das gezeigt wurde, die Nummer des letzten Array-Eintrages ist, wird das neue Bild auf den Anfang zurück gesetzt. Ansonsten wird halt eins weiter gezählt.
Das Ganze funktioniert natürlich nicht, wenn keine Cookies aktiviert sind.
Dann wird nämlich wieder auf die Zufalls-Variante zurück gegriffen und dementsprechend könnte das Bild auch wieder mehrmals hintereinander angezeigt werden.

Mir sind auch gerade ein paar Fehler im Script aufgefallen, die ich mal schnell Korrigiere (falls weitere Fehler vorhanden sein sollten - ich hab' leider nicht die nötige Zeit, um alles genau zu testen - könnt ihr die gerne korrigieren und posten ;-) ):

PHP:
<?php 
$bilder     = array("banner1.gif", 
        "banner2.gif", 
         "banner3.gif", 
         "banner4.gif"); 

$links    =    array("<a href=\"test1.html\">Jo</a>", 
              "<a href=\"test2.html\">Micha</a>", 
                       "<a href=\"test3.html\">Dein Buch</a>", 
                       "<a href=\"test4.html\">Neues vom Markt</a>"); 

if (isset($_COOKIE['zahl'])) 
{ 
    $letztesbild = $_COOKIE['zahl']; 

   if ($letztesbild == sizeof($bilder) - 1) 
        $neuesbild = 0; 
   else 
        $neuesbild = $letztesbild + 1; 
} 
else 
{ 
    //wenn kein Cookie gesetzt, Bild zufällig auswählen 
    mt_srand ((double)microtime()*1000000); 
    $neuesbild = mt_rand(0,(sizeof($bilder) - 1)); 
} 

setcookie ("zahl", $neuesbild); 
echo "<img src=\"".$bilder[$neuesbild]."\"><br>" ; 
echo $links[$neuesbild]; 

?>
 
Moin moin,

rootssw:
Dein Code läuft super mit Mozilla Firefox, aber wenn ich es mit IE versuche werden die Bilder nicht angezeigt :-(

Kann mir jemand sagen, warum?
Sicherheitseinstellungen (Cookies annehmen) habe ich soweit es geht, dabei runtergedreht - es will trotzdem nicht :(
 
Ha,

da habe ich hier gleich etwas gelernt - super.
Ich konnte die Sache selbst klären ;-)

Ich musste das
PHP:
setcookie ("zahl", $neuesbild);
echo "<img src=\"".$bilder[$neuesbild]."\"><br>" ;
echo $links[$neuesbild];


abändern in
PHP:
setcookie ("zahl", $neuesbild);
echo "<p>" ;
echo "<img src=\"".$bilder[$neuesbild]."\"></p>" ;
echo $links[$neuesbild];

Danke auf jeden Fall für den Code - das ist 'ne Supersache.
So, mein 2tes Posting. Ich hoffe, es werden jetzt regelmässig mehr.

cu l8ter
Jens
 
Hallo Jens Richter,

wieso mustest du die Zeile ech "<p>" ; im Script ersetzten damit es läuft?
PHP:
echo "<p>" ;

Und wieso hast du anstat <br> ein </p> geschrieben ?
PHP:
 echo "<img src=\"".$bilder[$neuesbild]."\"><br>" ;

Resultat:

PHP:
 setcookie ("zahl", $neuesbild); 
echo "<p>" ; 
echo "<img src=\"".$bilder[$neuesbild]."\"></p>" ; 
echo $links[$neuesbild];

Was ist der Hintergrund?

gruß
feh
 
Zuletzt bearbeitet:
Hallo Feh,

ich hatte das Verhalten, daß der Internet Explorer 6 die Bilder einfach nicht anzeigen wollte.
Beim Firefox war alles wunderbar. Im Quelltext der Seite schien aber alles OK zu sein, trotzdem sah man beim IE kein Bild.

Ich hatte auf der Seite ein einziges, statisches Bild, bevor ich diese Array-Funktion testete, und dort (auf der alten Seite) war halt das <p> und </p> vor, bzw. nach dem img-Tag.
(ist dort mit Dreamweaver MX hineingekommen)
Dann probierte ich das einfach aus in der Funktion aus - und siehe da, es funktioniert.

Ich bin kein php-Spezi, sondern lerne noch und arbeite mich darin langsam ein.
Warum das vorher nicht ging und jetzt schon (reproduzierbar) erschließt sich mir selbst nicht so ganz; im Moment bin ich aber happy, daß es jetzt läuft.
Gruß, Jens
 
Hallo Jens,

vielen Dank für deine Erklärung hat mich sehr gefreut.

Ich denke ich werde es auch mal mit dem Script versuchen und mich dann bei Problemen an deine Lösung erinnern.

gruß
feh
 
Zurück