Tuna: Rotierende Banner nach Tageszeit

Ich möchte meine Page en bisschen interessanter gestalten und möchte darum gern mehrere Banner haben die je nach Tageszeit rotieren sollen. Ich habe also 4 Banner, jedes soll am Tag 6 Stunden "dran sein", also von 0-6 Uhr z.B. Banner #1, danach dann #2 die nächsten 6 Stunden usw.

Ich weiß dank Bing-Suche schon dass man dies mit php machen kann, ich habe nur von php keine Ahnung darum muss ich hier um Hilfe bitten. Auf Google/Bing finde ich nur Codes für random image rotation, aber meine soll ja nicht random sein sondern eben geregelt.

Könnte mir jemand den benötigten Code dafür verraten?

  1. @@Tuna:

    nuqneH

    Ich möchte meine Page en bisschen interessanter gestalten und möchte darum gern mehrere Banner haben die je nach Tageszeit rotieren sollen.

    Da habe ich zuerst mal eine Frage: Wessen Tageszeit?

    Qapla'

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
    1. Da habe ich zuerst mal eine Frage: Wessen Tageszeit?

      Qapla'

      In dem Fall die des Servers.

      1. Moin,

        In dem Fall die des Servers.

        Dann nimmst du dir eine serverseitige Skriptsprache, beispielsweise PHP und liest die (Uhr-)Zeit aus und entscheidest dann, welches Banner angezeigt werden soll. Dafür ist die Date-Funktion von PHP interessant.

        Grüße Marco

        --
        Ich spreche Spaghetticode - fließend.
        1. Also nehme ich

          string date ( string $format [, int $timestamp = time() ] )

          und wo trag ich dann die Zeiten & die URLs der Bilddateien ein?

  2. Hi
    z.B.

    <?php  
    if (date("h") <= 6) {  
    	echo"<a href='MEIN_LINK_ZUM_BANNRR.htm'><img src='mein_baner1.jpg'></a>";  
    else if (date("h") usw) {  
       ..  
    }  
    ?>
    

    Viele Grüße aus LA

    --
    ralphi
    1. @@ralphi:

      nuqneH

      if (date("h") <= 6) {

      Dir ist entgangen, dass '10' < '6' ist?

      Also so nicht.

      Qapla'

      --
      „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
      1. ist doch nur das prinzip gemeint ;-)
        wenn ichs mal hätte laufen lassen, hät ichs schon gemerkt

        als ansatz zum rumprobieren langts
        einfach mal anzeigen lassen:

        $stunde=date("h");  
        echo $stunde;
        

        oder einfach kucken unter:
        date() kuckst du
        Viele Grüße aus LA

        --
        ralphi
    2. Also ich hab damit rumprobiert versucht und so siehts aus aber...

        
      <?php  
      if (date("H") <= 06) {  
              echo "<img src='http://URL/banner1.PNG'>";  
      else if (date("H") <= 12) {  
              echo "<img src='<img src='http://URL/banner2.PNG'>";  
      else if (date("H") <= 18) {  
              echo "<img src='<img src='http://URL/banner3.PNG'>";  
      else if (date("H") <= 12) {  
              echo "<img src='<img src='http://URL/banner4.PNG'>";  
      }  
      ?>  
      
      

      ...funktioniert nicht. Sämtlicher Code nach der ersten Bild-URL wird AUF der Seite angezeigt, inklusive der banner 2-4.

      1. ...funktioniert nicht. Sämtlicher Code nach der ersten Bild-URL wird AUF der Seite angezeigt, inklusive der banner 2-4.

        speicherst du die datei unter datei.php oder .html / auf dem server oder offline (nur browser)?

        Viele Grüße aus LA

        --
        ralphi
        1. speicherst du die datei unter datei.php oder .html / auf dem server oder offline (nur browser)?

          Ich hab sie als datei.php sowohl auf dem browser als auch auf nem server getestet. Auf dem Server bekomme ich nichtmal das html angezeigt, nur den reinen Code.

          Hier ist der komplette Code meiner Testdatei.

            
          <html>  
          <head>  
          <title>Bla Blub</title>  
          </head>  
          <body>  
          <body background="URL:/test.PNG">  
          <?php  
          if (date("H") <= 06) {  
                  echo "<img src='http://URL/test1.PNG'>";  
          }  
          else if (date("H") <= 12) {  
                  echo "<img src='http://URL/test2.PN'>";  
          }  
          else if (date("H") <= 18) {  
                  echo "<img src='http://URL/test3.PNG'>";  
          }  
          else if (date("H") <= 00) {  
                  echo "<img src='http://URL/test4.PNG'>";  
          }  
          ?>  
          </body>  
          </html>  
            
          
          
          1. 2x body !?
            Viele Grüße aus LA

            --
            ralphi
            1. 2x body !?
              Viele Grüße aus LA

              zweites body entfernt, funtioniert immer noch nichts.

              1. zweites body entfernt, funtioniert immer noch nichts.

                probier einfach mal in einem texteditor

                <?php  
                echo "PHP funktioniert";  
                ?>
                

                und speicher als test.php auf deinem server ab. bei xampp - verzeichnis htdocs

                dann ruf auf http://deinserver/test.php

                wenn du "PHP funktioniert" nicht siest, hast du den php-server nicht am laufen.
                Viele Grüße aus LA

                --
                ralphi
          2. Tach!

            speicherst du die datei unter datei.php oder .html / auf dem server oder offline (nur browser)?
            Ich hab sie als datei.php sowohl auf dem browser als auch auf nem server getestet. Auf dem Server bekomme ich nichtmal das html angezeigt, nur den reinen Code.

            Dann wirst du auf dem Server (mit dem derzeitigen Hostingpaket / der aktuellen Konfiguration) kein PHP ausführen können.

            dedlfix.

      2. Hallo,

        Also ich hab damit rumprobiert versucht und so siehts aus aber...

        <?php

        if (date("H") <= 06) {
                echo "<img src='http://URL/banner1.PNG'>";
        else if (date("H") <= 12) {
                echo "<img src='<img src='http://URL/banner2.PNG'>";
        else if (date("H") <= 18) {
                echo "<img src='<img src='http://URL/banner3.PNG'>";
        else if (date("H") <= 12) {
                echo "<img src='<img src='http://URL/banner4.PNG'>";
        }
        ?>

        
        >   
        > ...funktioniert nicht.  
          
        natürlich nicht, das Script startet wegen eines schwerwiegenden Syntaxfehlers ("Parse Error") nicht einmal. Hast du mal die Anzahl der öffnenden und schließenden Klammern verglichen? Eigentlich sollten es gleich viele sein ...  
          
        Ciao,  
         Martin  
        
        -- 
        Denken ist wohl die schwerste Arbeit, die es gibt. Deshalb beschäftigen sich auch nur wenige damit.  
          (Henry Ford, amerikanischer Industriepionier)  
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        
        1. Hast du mal die Anzahl der öffnenden und schließenden Klammern verglichen? Eigentlich sollten es gleich viele sein ...

          ups - mein fehler - syntaxfehler sind meine Spezialität ;-)

          Viele Grüße aus LA

          --
          ralphi
      3. date("h") gibt einen String zurück. Das ist ein Problem bei kleiner, größer, etc. intval(date("h")) parst die Stunde zu einem Integer, den Du vergleichen kannst.

        Desweiteren achte mal auf Deine Klammersetzung. Das dürfte überhaupt nicht funktionieren, was Du da gepostet hast.

        Cheers,
        Baba

        1. und es funktioniert doch !!

          jetzt hab ichs doch mal kurz gecheckt, wenn der 2te schon sagt date() kann man nicht mit ziffer - ifen
          probierst du:

          <?php  
          echo "start " . date("s");  
          if ( date("s") <20 ) {  
          	echo " kleiner 20 "  . date("s");  
          }  
          ?>
          

          hätte mich auch gewundert - einige alte programme laufen bei mir so
          Viele Grüße aus LA

          --
          ralphi
          1. Tach!

            jetzt hab ichs doch mal kurz gecheckt, wenn der 2te schon sagt date() kann man nicht mit ziffer - ifen

            Genau genommen ist das date() hier vernachlässigbar. Man muss nur wissen, dass es einen String zurückliefert. Und dann kann man Vergleichsversuche auch mit String-Literalen versus Integer-Literalen durchführen. Das Ergebnis wird dann so sein, wie es die PHP type comparison tables vorhersagen.

            dedlfix.

            1. »»Das Ergebnis wird dann so sein, wie es die PHP type comparison tables vorhersagen.

              ich finde die deklarationen von vars in php und JS eh sehr frei. mal schnell mit ner 1 multipliziert und man hat aus nem string nen integer.
              in VB6 und anderen gehts da strikter zu - dafür aber übersichtlicher - find ich

              Viele Grüße aus LA

              --
              ralphi
              1. Tach!

                ich finde die deklarationen von vars in php und JS eh sehr frei. mal schnell mit ner 1 multipliziert und man hat aus nem string nen integer.
                in VB6 und anderen gehts da strikter zu - dafür aber übersichtlicher - find ich

                Dafür muss man im Querystring oder per POST-Werte enthaltene Zahlen erst "aufwendig" in einen Zahlentyp parsen. PHP erledigt das nebenbei im Hintergrund, so dass man selbst einige Arbeitsschritte sparen kann. Es hat alles manchmal Vorteile und manchmal Nachteile.

                dedlfix.

                1. OK cool find ich auch ich versteh nur kein Wort.

                  Kann mir jemand mit dem Code helfen?

        2. Tach!

          date("h") gibt einen String zurück. Das ist ein Problem bei kleiner, größer, etc. intval(date("h")) parst die Stunde zu einem Integer, den Du vergleichen kannst.

          Man muss es nicht so kompliziert machen, PHP kann selbständig konvertieren. Zum einen nähme ich G, weil das 24 Stunden ohne führende 0 ist, aber H (mit führender 0) passt auch, weil der Vergleich von '06' (string) und 6 (int) ebenfalls true ergibt. Spricht: Zahlen in Strings sind ziemlich problemlos mit echten Zahlen vergleichbar.

          Anders als bei einer literal notierten Integerzahl mit führender 0 wird bei Zahlenwerten in Strings diese führende 0 nicht als Oktalzahl-Indikator gewertet. Deswegen ergibt auch ein date('H') was in der neunten Stunde eines Tages '08' zurückliefert keine stillschweigende Konvertierung zu 0. Ein literales 08 hingegen ist eine ungültige Oktalzahl (wird wie 09 oder 0800 etc. zu 0 konvertiert). Deswegen sollte man führende Nullen lieber weglassen, auch wenn sie damit mit anderen zweistelligen Zahlen untereinander geschrieben vielleicht schöner formatiert aussehen.

          dedlfix.

    3. Hallo,

      Kürzer:

      <?php  
      echo"<a href='MEIN_LINK_ZUM_BANNER.htm'><img src='mein_banner" .  (int)(date('H')/6) . ".jpg'></a>";  
      ?>
      

      vg ichbinich

      --
      Kleiner Tipp:
      Tofu schmeckt am besten, wenn man es kurz vor dem Servieren durch ein saftiges Steak ersetzt...
      1. Om nah hoo pez nyeetz, ichbinich!

        Kürzer:

        <?php

        echo"<a href='MEIN_LINK_ZUM_BANNER.htm'><img src='mein_banner" .  (int)(date('H')/6) . ".jpg'></a>";
        ?>

          
        schöner:  
        `<a href="MEIN_LINK_ZUM_BANNER.htm"><img src="mein_banner<?=[code lang=php](int)(date('H')/6)`{:.language-html}?>.jpg"></a>  
        [/code]  
          
        Matthias
        
        -- 
        Der Unterschied zwischen Java und JavaScript ist größer als der zwischen [Ara--1 und Aragorn](http://selfhtml.apsel-mv.de/java-javascript/index.php?buchstabe=A#ara--1).  
        ![](http://www.billiger-im-urlaub.de/kreis_sw.gif)  
        
        
        1. Hallo,

          schöner:
          <a href="MEIN_LINK_ZUM_BANNER.htm"><img src="mein_banner<?=[code lang=php](int)(date('H')/6)?>.jpg"></a>
          [/code]

          In der Tat.

          vg ichbinich

          --
          Kleiner Tipp:
          Tofu schmeckt am besten, wenn man es kurz vor dem Servieren durch ein saftiges Steak ersetzt...