samurif: täglich wechselnde Startseite? möglich?

Hallo, (ich hoffe, ich bin im richtigen Bereich)

ich möchte gerne eine Startseite haben, die sich selbst - je nach Wochentag - anpasst.
Also brauche ich 6 Seiten, die je nach Wochentag als Startseite herhalten...
Mo - Fr + Sa/So

ist das realisierbar?

Wenn ja, wo kann ich nachlesen, wie es realisiert wird? bzw. hat jemand eine Idee, wie ich es umsetzen kann.

Danke
samurif

  1. Hallo,

    Also brauche ich 6 Seiten, die je nach Wochentag als Startseite herhalten...

    ist das realisierbar?

    Ja. Du brauchst eine Abfrage auf den Wochentag, das geht serverseitig mit einer Programmiersprache wie PHP und im Browser mit Javascript.

    Da man Javascript abschalten kann, ist PHP dein Freund.

    Du machst 6 verschiedene Seiten als PHP- include (Bausteine). Das immer gleiche Rumpfprogramm fragt den Wochentag ab und lädt die entsprechende include- Datei, die dann zum Client geschickt wird.

    Auf diese Weise kannst du auch bequem eine Neujahrs-, Oster-, Pfingstseite machen ...

    Kalle

    1. klasse, das das funktioniert, Danke Kalle, für den gesteckten Rahmen.
      Da ich mit PHP bisher nicht vertraut bin (die Lösung gefällt mir eh besser als JAvaSkript) mache ich mich auf die Suche ;-)

      Danke
      Andi

      ps. für weitere Umsetzungshinweise (technisch) bedanke ich mich vorab

      Hallo,

      Also brauche ich 6 Seiten, die je nach Wochentag als Startseite herhalten...

      ist das realisierbar?

      Ja. Du brauchst eine Abfrage auf den Wochentag, das geht serverseitig mit einer Programmiersprache wie PHP und im Browser mit Javascript.

      Da man Javascript abschalten kann, ist PHP dein Freund.

      Du machst 6 verschiedene Seiten als PHP- include (Bausteine). Das immer gleiche Rumpfprogramm fragt den Wochentag ab und lädt die entsprechende include- Datei, die dann zum Client geschickt wird.

      Auf diese Weise kannst du auch bequem eine Neujahrs-, Oster-, Pfingstseite machen ...

      Kalle

      1. so, nun zum schwierigen Teil:

        Ermitteln des Wochentages:

        <?php
          $timestamp = time();
          $datum = date("w",$timestamp);
          echo $datum;
          ?>

        ist das richtig?

        das includieren habe ich mir auch angeschaut, ist es richtig, das jetzt eine if-Abfrage kommen muss, um den richtigen content (Baustein) anzuzeigen?

        1. so, nun zum schwierigen Teil:

          Ermitteln des Wochentages:

          <?php
            $timestamp = time();
            $datum = date("w",$timestamp);
            echo $datum;
            ?>

          ist das richtig?

          das includieren habe ich mir auch angeschaut, ist es richtig, das jetzt eine if-Abfrage kommen muss, um den richtigen content (Baustein) anzuzeigen?

          ist das die richtige if-Abfrage / passen die Klammern?
          oder bin ich auf dem Holzweg...

          <?php
            if($datum == "1")
            {
            echo "montag.php";
            }
            else
             {
             if($datum == "2")
             {
             echo "dienstag.php";
             }
              else
                {
                if($datum == "3")
                {
                echo "mittwoch.php";
                }
                   else
                   {
                   if($datum == "4")
                   {
                   echo "donnerstag.php";
                   }
                       else
                       {
                       if($datum == "5")
                       {
                       echo "freitag.php";
                       }
              else
                echo "wochenende.php";
                       }
                   }
                 }
              }
            }
          }
          ?>

          1. Hi!

            Das ist supoptimal... Es gibt zuerstmal else if. Damit sparst dir ewig tiefe Verschachtelungen.
            Dann ist fuer Dein Vorhaben ein If-Konstrukt eh nur maessig geeignet. Fuer soetwas nutzt man meist einen switch.

            --
            "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                  - T. Pratchett
            1. Das ist supoptimal... Es gibt zuerstmal else if. Damit sparst dir ewig tiefe Verschachtelungen.
              Dann ist fuer Dein Vorhaben ein If-Konstrukt eh nur maessig geeignet. Fuer soetwas nutzt man meist einen switch.

              Oder gleich einen Array und fragt den Index ab.

              mfg Beat

              --
              Woran ich arbeite:
              X-Torah
              ><o(((°>           ><o(((°>
                 <°)))o><                     ><o(((°>o
              1. Hi!

                Oder gleich einen Array und fragt den Index ab.

                Hmmm. Sexy!

                *pfeif*

                --
                "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                      - T. Pratchett
                1. Hi,

                  Oder gleich einen Array und fragt den Index ab.

                  Hmmm. Sexy!

                  Oder man benennt die einzubindenden Dateien gleich mit Wochentagsnummer+".php" - dann braucht man die Wochentagsnummer beim include nur noch mit der Endung verknuepfen, und fertig.

                  MfG ChrisB

                  --
                  „This is the author's opinion, not necessarily that of Starbucks.“
                  1. Oder gleich einen Array und fragt den Index ab.
                    Hmmm. Sexy!
                    Oder man benennt die einzubindenden Dateien gleich mit Wochentagsnummer+".php" - dann braucht man die Wochentagsnummer beim include nur noch mit der Endung verknuepfen, und fertig.

                    Bis auf die Tatsache, dass er am Samstag und Sonntag die gleiche zeitung ausliefern will.
                    Dann gibt's zum Sonntag halt einen fatal Error.

                    mfg Beat

                    --
                    Woran ich arbeite:
                    X-Torah
                    ><o(((°>           ><o(((°>
                       <°)))o><                     ><o(((°>o
                    1. Hi,

                      Oder man benennt die einzubindenden Dateien gleich mit Wochentagsnummer+".php" - dann braucht man die Wochentagsnummer beim include nur noch mit der Endung verknuepfen, und fertig.

                      Bis auf die Tatsache, dass er am Samstag und Sonntag die gleiche zeitung ausliefern will.

                      Ups, so genau hatte ich nicht gelesen.

                      Dann gibt's zum Sonntag halt einen fatal Error.

                      Oder man legt einen Symlink 0.php an, der auf 6.php verweist :-)

                      Bzw. eine if-Abfrage fuer diesen einen Sonderfall reicht ja dann auch aus.

                      $tagNummer = date('w');
                      if($tagNummer == 0) { $tagNummer = 6; }
                      include($tagNummer.'.php');

                      MfG ChrisB

                      --
                      „This is the author's opinion, not necessarily that of Starbucks.“
                      1. wow, den gesamten Input muss ich jetzt erst einmal verarbeiten. Danke für die Tipps!
                        gut, das ich mal C lernen musste ...(und fast nix mehr weiß)

            2. Das ist supoptimal... Es gibt zuerstmal else if. Damit sparst dir ewig tiefe Verschachtelungen.

              fürs protokoll:
              else if hat keinen technischen unterschied zum geposteten code des op (lediglich die schreibweise ist anders und man spart sich die einrückung nud verschachtelung) - elseif wäre etwas anderes

              es läuft aber aufs selbe raus ;)

              elseif
              "Die Bedeutung der Syntax ist leicht unterschiedlich (falls Sie mit C vertraut sind, das ist das gleiche Verhalten) aber der Grundtenor ist der, dass beide Schreibweisen, bezogen auf das Ergebnis, sich exakt gleich verhalten."

              Dann ist fuer Dein Vorhaben ein If-Konstrukt eh nur maessig geeignet. Fuer soetwas nutzt man meist einen switch.

              oder man bennent die einzubindenden files gleich nach dem wochentag und spart sich die verzweignug - sofern keine variablen von aussen durchgereicht werden, ist das klein problem

              allerdings mussm an hier aufpassen, dass die ausgegebenen daten auch so sind, wie erwartet (je nach servereinstellung bzw sprache kann das abweichen)

    2. Du machst 6 verschiedene Seiten als PHP- include (Bausteine).

      alternativ: du bindest je nach wochentag ein zusätzliches stylesheet ein, welches die visuellen unterschiede ausmacht (anders hintergrundbild, andere farben usw) - ein vollständig anderer html-quelltext ist ggf. garnicht nötig

      1. die Stylesheets helfen mir nicht, da ich verschiedene Texte ausgeben möchte,
        somit sind die Bausteine eine gute Lösung für mich

        Du machst 6 verschiedene Seiten als PHP- include (Bausteine).

        alternativ: du bindest je nach wochentag ein zusätzliches stylesheet ein, welches die visuellen unterschiede ausmacht (anders hintergrundbild, andere farben usw) - ein vollständig anderer html-quelltext ist ggf. garnicht nötig

        1. die Stylesheets helfen mir nicht, da ich verschiedene Texte ausgeben möchte,
          somit sind die Bausteine eine gute Lösung für mich

          na dann ist ja alles geklärt hoffe ich doch, jetzt liegts an dir ob du dich für die switch-geschichte, beats letzte idee (bzw meinen ansatz dazu), ein array oder sonstwas dafür verwendest

          btw: anstatt include solltest du in jedem fall require verwenden, require führt beim nichtvorhanden sein des einzubindenden files zu einem fatalen fehler (und somit zum scriptabbruch), include gibt ein warning aus und setzt fort

          zwar ist die include-geschichte augenscheinlich die bessere wahl, fehlermeldungen zu unterdrücken oder zu ignorieren ist allerdings schlechter stil und "sehr peinlich" (eine suche in der suchmaschine deiner wahl nach _"Warning: include" "failed to open stream"_ liefert genügend beispiele wo diese fehlermeldung online in einer seite zu sehen ist)

  2. Hi!

    ist das realisierbar?

    Klar. Jeden Aufruf ne neue Seite, wenn DU willst. Was sollte Dich hindern?

    Wenn ja, wo kann ich nachlesen, wie es realisiert wird? bzw. hat jemand eine Idee, wie ich es umsetzen kann.

    Am besten nicht mit JavaScript. Serverseitig waere sinnvoll. Php sollte auf den meisten Webspaces verfuegbar sein...

    --
    "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
          - T. Pratchett
  3. ist das die richtige schreibweise?

    <?php
     $timestamp = time();
     $datum = date("w",$timestamp);
     echo $datum;
     ?>

    <?php
    switch ($datum) {
    case 1:
        echo "<? include ("montag.php"); ?> ";
        break;
    case 2:
        echo "<? include ("dienstag.php"); ?> ";
        break;
    case 3:
        echo "<? include ("mittwoch.php"); ?> ";
        break;
    case 4:
        echo "<? include ("donnerstag.php"); ?> ";
        break;
    case 5:
        echo "<? include ("freitag.php"); ?> ";
        break;
    default:
        echo  "<? include ("we.php"); ?> ";
       }
    ?>

    1. echo "<? include ("montag.php"); ?> ";

      das ist natürlich blödsinn, du willst ja include "montag.php"; ausführen, nicht und nicht das selbe als string ausgeben ;)

      1. echo "<? include ("montag.php"); ?> ";

        das ist natürlich blödsinn, du willst ja include "montag.php"; ausführen, nicht und nicht das selbe als string ausgeben ;)

        Noob fragt:
        Kann ich alles komprimieren ?

        <?php
        include(
          'tagblatt_nr' .
          ( date("w",$timestamp) || 6 ) .
          '.php'
        );
        ?>

        Am Sonntag wird dann 'tagblatt_nr6.php' wie am Samstag includiert

        mfg Beat

        --
        Woran ich arbeite:
        X-Torah
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        1. Noob fragt:
          Kann ich alles komprimieren ?

          <?php
          include(
            'tagblatt_nr' .
            ( date("w",$timestamp) || 6 ) .
            '.php'
          );
          ?>

          Am Sonntag wird dann 'tagblatt_nr6.php' wie am Samstag includiert

          soweit ich weiss, funzt das so nicht - die 6 nach dem operator wird ignoriert

          dafür müsste wie bereits an anderer stelle erwähnt ein symlink herhalten

          alternativ mit einer bedingung
          include (('foo' . (date("w", time()) == 6) ? 5 : date("w", time())) . '.html');

          das sollte dafür sorgen, dass auch an tag 6 das file von tag 5 eingebunden wird (nicht getestet)

    2. ist das die richtige schreibweise?

      <?php
      $timestamp = time();
      $datum = date("w",$timestamp);
      echo $datum;
      ?>

      Du gehst in Einzelschritten vor, und speicherst die Zwischenresultate jetzt noch in Variablen, die eigentlich aufgelöst werden können.
      Ich sage nicht, dass das falsch ist, denn das ist für das Debugging ja optimal. Nur 'kosten' unnötige Variablen immer etwas, es sei denn ein ganz kluger intperpreter kann sie automatisch weg rationalisieren.

      <?php
        $datum = date( "w", time() );
      ?>

      und auch $datum brauchst du nicht...

      <?php
      switch ($datum) {

      switch(  date( "w", time() )  )

      case 1:
          echo "<? include ("montag.php"); ?> ";
          break;
      case 2:
          echo "<? include ("dienstag.php"); ?> ";
          break;
      case 3:
          echo "<? include ("mittwoch.php"); ?> ";
          break;
      case 4:
          echo "<? include ("donnerstag.php"); ?> ";
          break;
      case 5:
          echo "<? include ("freitag.php"); ?> ";
          break;
      default:
          echo  "<? include ("we.php"); ?> ";
         }
      ?>

      Die Schreibweise ist schon richtig, aber dein Programm druckt
      "<? include ("freitag.php"); ?> " aus , statt es zu tun.

      In Perl würde ich halt schreiben:

      open(FH,'<','tagblatt_'.( ( localtime(time) )[6] || 6 ).'.xml')
            or die ("Scheisstag $!");
      print <FH>;
      close();

      kein iffelturm und keine zwitcherei aber ein einziges ||

      Das hilft dir jetzt nicht weiter. Aber mit PHP kannst du zu einer ähnlich kurzen Lösung gelangen.
      Von PHP habe ich leider keinen blassen Schimmer.

      mfg Beat;

      --
      Woran ich arbeite:
      X-Torah
      ><o(((°>           ><o(((°>
         <°)))o><                     ><o(((°>o
      1. Nur 'kosten' unnötige Variablen immer etwas, es sei denn ein ganz kluger intperpreter kann sie automatisch weg rationalisieren.

        das tun auch einfache interpreter, sonderlich klug muss der dafür nicht sein

        das problem ist eher, dass php keinen byte cache besitzt und diese optimierungsmaßnahmen vor dem eigentlichen ausführen jedes mal aufs neue gemacht werden müssen

    3. vielen Dank - jetzt klappt es, damit:

      switch(  date( "w", time() )  )
      {
      case 1:
      include ("montag.inc");break;

      ect.