ragnar: bild austausch, speziell!!

Hi @all,

ich möchte gerene bei meiner Seite eine bildaustauschfunktion einfügen, die bedingung ist, dass das bild wechselt, es soll aber nicht wechseln wenn auf Aktualisieren (F5) geklickt wird. ich möchte das mit session lösen, leider habe ich noch ein kleines problem.... :)

ich poste mal den code:

<?php
session_start;
?>

<?
srand((double)microtime()*1000000);
$arry_txt = preg_split("/--/", join('', file("code/random.txt")));

if (!isset($HTTP_SESSION_VARS["randomwert"]))
{
$randomwert = $arry_txt[rand(0, sizeof($arry_txt) -1)];
session_register("randomwert");
}
else $randomwert = $HTTP_SESSION_VARS["randomwert"];
{

print "<br><br>->";
print $randomwert;

if ($randomwert == "1")
{
$randflash = "source1.swf";
$randtext = "text1.gif";
}
if ($randomwert == "2")
{
$randflash = "source2.swf";
$randtext = "text2.gif";
}
if ($randomwert == "3")
{
$randflash = "source3.swf";
$randtext = "text3.gif";
}
if ($randomwert == "4")
{
$randflash = "source4.swf";
$randtext = "text4.gif";
}
if ($randomwert == "5")
{
$randflash = "source5.swf";
$randtext = "text5.gif";
}
if ($randomwert == "6")
{
$randflash = "source6.swf";
$randtext = "text6.gif";
}
if ($randomwert == "7")
{
$randflash = "source7.swf";
$randtext = "text7.gif";
}
if ($randomwert == "8")
{
$randflash = "source8.swf";
$randtext = "text8.gif";
}
if ($randomwert == "9")
{
$randflash = "source9.swf";
$randtext = "text9.gif";
}

else
{
$randflash = "stand.swf";
$randtext = "standtext.gif";
}

print $randflash;
print $randtext;
}
?>

das textfile beinhaltet zahlen von 1 bis 9, momentan zeigt es mir so immer nur bild9 an, weiss nicht warum,

kann mir bitte jemand helfen, oder eine bessere Lösung vorschlagen????

vielen Dank gruss ragnar

  1. Moin,

    Also dein Code ist etwas unübersichtlich, also hab ich das mal auf Arrays umgemodelt. Ausserdem verstehe ich den Umweg mit der Textdatei nicht und habe den zum besseren Verständnis (und damit ich das lokal testen kann) auf rand() umgebogen.

    <?php
    session_start(); // <- Da fehlten (), wir sind ja hier nicht bei Pascal ;)

    srand((double)microtime()*1000000);

    $dateien['flash'] = Array( "source1.swf", "source2.swf", "source3.swf",
                               "source4.swf", "source5.swf", "source6.swf",
                               "source7.swf", "source8.swf", "source9.swf" );
    $dateien['text'] = Array( "text1.gif", "text2.gif", "text3.gif",
                              "text4.gif", "text5.gif", "text6.gif",
                              "text7.gif", "text8.gif", "text9.gif" );

    if (!isset($HTTP_SESSION_VARS["randomwert"])) {
     $randomwert = rand(0, count($dateien['flash'])-1);
     session_register("randomwert");
    } else $randomwert = $HTTP_SESSION_VARS["randomwert"];

    // Das da ist hier wohl überflüssig: {

    print "<br><br>->";
    print $randomwert;

    $randflash = $dateien['flash'][$randomwert];
    $randtext = $dateien['flash'][$randomwert];

    print $randflash;
    print $randtext;
    // Das da ist dann wohl auch überflüssig: }
    ?>

    So, jetzt sehe ich auch dein Problem (bzw. es ist gleich verschwunden). Deine letzte if()-Abfrage hat $randflash und $randtext in jedem Fall überschrieben: Wenn $randomwert auf 9 gesetzt war, wurden sie mit source9.swf bzw. text9.gif belegt, in _jedem_ anderen Fall mit stand.swf bzw. standtext.gif.

    Da aus deinem Code nicht ersichtlich war, wann sie wirklich so belegt werden sollten, ist das hier rausgefallen. Anmerkung: Wenn deine Dateien wirklich alle so heissen, solltest du vielleicht die Namen gleich komplett zusammenbauen ($randflash = "source".$randomwert.".swf";) und kannst dir das Array sparen.

    PS: Das Ding zählt jetzt richtig[tm], d.h. $randomwert gleich 0 entspricht $randflash gleich "source1.swf".

    --
    Henryk Plötz
    Grüße aus Berlin

    * Help Microsoft combat software piracy: Give Linux to a friend today! *