Simsso: An Weihnachten ein anderes Bild anzeigen

Hallo,
ich möchte an Weihnachten mein Überschriftsbild verändern. Habe jetzt mal diesen Code:

<!-- Beginn Überschrift-->
<center><div id="f3"><br /><u><b><center><h1><a name="Startseite_Top"> </a></h1>
<?php
$Tag = date("t");
$Monat = ("n");
if ($Tag = "24" && $Monat = "12") { $a = "HL_Startseite_Weihnachten.gif"; }
else { $a = "HL_Startseite.jpg"; }
?>
<img src="http://www.simsso.de/Seitenueberschriften/<? echo $a ?>" height="45" width="250" /></u></b></center><br /></div></center>
<!--Ende Überschrift-->

Aber irgendwie wird immer das Bild "HL_Startseite_Weihnachten.gif" angezeigt, obwohl nicht Weihnachten ist. Habt ihr eine Idee, woran das liegt?

Gruß

  1. Vergleiche macht man mit == statt =

  2. Hi,

    ich möchte an Weihnachten mein Überschriftsbild verändern. Habe jetzt mal diesen Code:

    <!-- Beginn Überschrift-->
    <center><div id="f3"><br /><u><b><center><h1><a name="Startseite_Top"> </a></h1>

    Dafür gibt's vom Weihnachstmann aber sicher keine Geschenke ...

    if ($Tag = "24" && $Monat = "12") { $a = "HL_Startseite_Weihnachten.gif"; }

    Aber irgendwie wird immer das Bild "HL_Startseite_Weihnachten.gif" angezeigt, obwohl nicht Weihnachten ist. Habt ihr eine Idee, woran das liegt?

    Daran, dass du keine Vergleiche, sondern Zuweisungen machst.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  3. Hello,

    ich möchte an Weihnachten mein Überschriftsbild verändern. Habe jetzt mal diesen Code:

    <!-- Beginn Überschrift-->
    <center><div id="f3"><br /><u><b><center><h1><a name="Startseite_Top"> </a></h1>
    <?php
    $Tag = date("t");
    $Monat = ("n");
    if ($Tag = "24" && $Monat = "12") { $a = "HL_Startseite_Weihnachten.gif"; }
    else { $a = "HL_Startseite.jpg"; }
    ?>
    <img src="http://www.simsso.de/Seitenueberschriften/<? echo $a ?>" height="45" width="250" /></u></b></center><br /></div></center>
    <!--Ende Überschrift-->

    Aber irgendwie wird immer das Bild "HL_Startseite_Weihnachten.gif" angezeigt, obwohl nicht Weihnachten ist. Habt ihr eine Idee, woran das liegt?

    Auch auf die Gefahr hin, dass ich Deinen Unwillen ernte:

    Du solltest als erstes lernen, Funktionalität und Ausgabe strikt zu trennen. Man steigt sa sonst nur noch schwer durch, was der Programmierer/Codierer eigentlich erreichen will.

    Also bau Dir eine Funktion, die den Namen einer Datei liefert, die dann entweder den relevanten HTML-Code oder nur die Referenz auf das Bild enthält, das jeweils angezeigt werden soll.

    http://de.php.net/manual/de/function.date.php
    beachte bitte die Zeitzoneneinstellungen Deines Servers.

    function get_imagename($timestamp, $standard='standardbild.gif')
    {
        if (date('Ymd', $timestamp) == '20111224') return 'weihnachten-2011.gif');
        if (date('Ymd H:i', $timestamp) == '20110626 13:00') return 'heute-13:00');
        if (date('Ymd H:i', $timestamp) == '20110626 13:05') return 'heute-13:05');

    return $standard;
    }

    Und diese Funktion baust Du dann an der passenden Stelle ein:

    <img src="pfad/zum/bilderverzeichnis/<?php echo get_imagename(time()); ?>" height="45" width="250" />

    Ich habe es jetzt nicht ausprobiert, aber so (oder so ähnlich) sollte es funktionieren.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. hallo,
      Aber wo ist bei meinem Code der Fehler?
      Kannst du das nicht einfach so umschreiben, dass es geht und mir erklären, was falsch war?
      Gruß

  4. Hi,

    $Monat = ("n");
    if ($Tag = "24" && $Monat = "12") { $a = "HL_Startseite_Weihnachten.gif"; }

    Zusätzlich zum bereits gesagten:

    "n" ist immer ungleich "12"

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. Hi,

      $Monat = ("n");
      if ($Tag = "24" && $Monat = "12") { $a = "HL_Startseite_Weihnachten.gif"; }

      Zusätzlich zum bereits gesagten:

      "n" ist immer ungleich "12"

      Wie würdest du es dann programmieren?
      WEnn ich die "=" durch "==" ersetzte geht es immernoch nicht.

      1. Moin!

        $Monat = ("n");
        if ($Tag = "24" && $Monat = "12") { $a = "HL_Startseite_Weihnachten.gif"; }

        Zusätzlich zum bereits gesagten:

        "n" ist immer ungleich "12"
        Wie würdest du es dann programmieren?
        WEnn ich die "=" durch "==" ersetzte geht es immernoch nicht.

        Wie ist denn jetzt der Zustand des Codes? Du hast irgendwas geändert, von dem wir nicht wissen, was genau.

        - Sven Rautenberg

        1. HI,

          Wie ist denn jetzt der Zustand des Codes? Du hast irgendwas geändert, von dem wir nicht wissen, was genau.

          Gerade siehts so aus:
          <!-- Beginn Überschrift-->
          <center><div id="f3"><br /><u><b><center><h1><a name="Startseite_Top"> </a></h1>
          <?php
          $Tag = date("t");
          $Monat = ("m");
          if ($Tag == "26" && $Monat == "06") { $a = "HL_Startseite_Weihnachten.gif"; }
          else { $a = "HL_Startseite.jpg"; }
          ?>
          <img src="http://www.simsso.de/Seitenueberschriften/<? echo $a ?>" height="45" width="250" /></u></b></center><br /></div></center>
          <!--Ende Überschrift-->

          1. Moin!

            Wie ist denn jetzt der Zustand des Codes? Du hast irgendwas geändert, von dem wir nicht wissen, was genau.
            Gerade siehts so aus:
            <!-- Beginn Überschrift-->
            <center><div id="f3"><br /><u><b><center><h1><a name="Startseite_Top"> </a></h1>
            <?php
            $Tag = date("t");
            $Monat = ("m");
            if ($Tag == "26" && $Monat == "06") { $a = "HL_Startseite_Weihnachten.gif"; }
            else { $a = "HL_Startseite.jpg"; }
            ?>
            <img src="http://www.simsso.de/Seitenueberschriften/<? echo $a ?>" height="45" width="250" /></u></b></center><br /></div></center>
            <!--Ende Überschrift-->

            Gut, da hast du die Anmerkung von Encoder etc. bezüglich der Vergleiche eingearbeitet, aber Mudguard bislang ignoriert.

            - Sven Rautenberg

          2. Hello,

            Wie ist denn jetzt der Zustand des Codes? Du hast irgendwas geändert, von dem wir nicht wissen, was genau.
            Gerade siehts so aus:
            <!-- Beginn Überschrift-->
            <center><div id="f3"><br /><u><b><center><h1><a name="Startseite_Top"> </a></h1>
            <?php

            Anzahl der Tage des (im Timestamp) angegebenen Monats, wozu dies?

            $Tag = date("t");

            Monat des angegebenen Datums

            $Monat = ("m");

            if ($Tag == "26" && $Monat == "06") { $a = "HL_Startseite_Weihnachten.gif"; }
            else { $a = "HL_Startseite.jpg"; }

            wird immer else, weil ja 't' nur 28, 29, 30 oder 31 liefert.

            ?>

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
             ☻_
            /▌
            / \ Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Hallo,

              Anzahl der Tage des (im Timestamp) angegebenen Monats, wozu dies?

              $Tag = date("t");

              eine sehr gute Frage. Das wäre mir nicht aufgefallen. Hat das von den anderen Lesern jemand bemerkt?

              Monat des angegebenen Datums

              $Monat = ("m");

              Nein, eben nicht. Nur die Stringkonstante "m".

              Ciao,
               Martin

              --
              Disziplin: Teppichböden wiederfinden, wenn man sie verlegt hat.
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              1. Hi,

                Anzahl der Tage des (im Timestamp) angegebenen Monats, wozu dies?

                $Tag = date("t");

                T ist dafür, dass wenn t den wert 24 hat ist ja noch lange nicht weihnachten. Aber wenn t den Wert 24 hat und m 12, dann ist weihnachten.

                Monat des angegebenen Datums

                $Monat = ("m");

                Gruß

                1. [latex]Mae  govannen![/latex]

                  Anzahl der Tage des (im Timestamp) angegebenen Monats, wozu dies?

                  $Tag = date("t");

                  T ist dafür, dass wenn t den wert 24 hat ist ja noch lange nicht weihnachten. Aber wenn t den Wert 24 hat und m 12, dann ist weihnachten.

                  Hat es aber nie. Doku lesen!

                  Stur lächeln und winken, Männer!
                  Kai

                  --
                  Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken
                  in Richtung "Mess up the Web".(suit)
                  SelfHTML-Forum-Stylesheet
                2. Hello,

                  Hi,

                  Anzahl der Tage des (im Timestamp) angegebenen Monats, wozu dies?

                  $Tag = date("t");

                  T ist dafür, dass wenn t den wert 24 hat ist ja noch lange nicht weihnachten. Aber wenn t den Wert 24 hat und m 12, dann ist weihnachten.

                  Monat des angegebenen Datums

                  $Monat = ("m");

                  Es müsste aber mindestens heißen:

                  $Tag = date("d");
                  $Monat = date("m");

                  Und nun kommt der nächste Fehler, den man aber nicht sofort sieht. Aber er kann zu recht witzigen Ergebnissen führen. Da während der Ausführung des Programmes der Timestamp weiterläuft, beziehen sich die beiden oben angewandten Funktionen nicht (nicht immer) auf denselben Timestamp.

                  Du müsstest also erst den Timestamp sichern, und dann mit einem einheitlichen rechnen.

                  $timestamp = time();
                      $tag       = date('d', $timestamp);
                      $monat     = date('m', $timestamp);

                  um dann, so wie Du das gemacht hast, zwei Vergleiche für Tag und Monat durchzuführen.

                  Das kannst Du abre auch glcieh in einem Schritt erledigen. Dafür benötigst Du dann auch keinen gesicherten Timestamp.

                  $referenz = date('md');

                  if ($referenz == '1224')
                      {
                          echo 'es ist Weihnachten';
                      }

                  oder gleich

                  if (date('md') == 1224) echo 'es ist Weihnachten);

                  Liebe Grüße aus dem schönen Oberharz

                  Tom vom Berg

                  --
                   ☻_
                  /▌
                  / \ Nur selber lernen macht schlau
                  http://bergpost.annerschbarrich.de
                  1. Hallo
                    Vielen Dank!!!!
                    Jetzt weiß ich wie es geht!
                    Gruß

                    1. Endgültige Version die funktioniert:

                      <?php
                      if (date('md') == 1224) echo '<img src="Bild URL" height="Höhe" width="Weite" />';
                      else echo '<img src="Bild URL" height="Höhe" width="Weite" />';
                      ?>

                      Wichtig ist nur, dass bei der Stelle wo " == 1224) echo" steht beachtet wird, dass der Wert für z. B. den 17.6 nicht 0617 ist sondern 617!

                      Gruß

                      1. Moin!

                        Endgültige Version die funktioniert:

                        <?php
                        if (date('md') == 1224) echo '<img src="Bild URL" height="Höhe" width="Weite" />';
                        else echo '<img src="Bild URL" height="Höhe" width="Weite" />';
                        ?>

                        Wichtig ist nur, dass bei der Stelle wo " == 1224) echo" steht beachtet wird, dass der Wert für z. B. den 17.6 nicht 0617 ist sondern 617!

                        Schlecht. Warum vergleichst du mit Zahlen, wo aus date() doch Strings herauskommen?

                        if (date('md') == "1224")

                        - Sven Rautenberg

                  2. Hello,

                    Bitte um Entschuldigung ;-|

                    oder gleich

                    if (date('md') == 1224) echo 'es ist Weihnachten';

                    aber es muss ein Stringvergleich bleiben. Also:

                    if (date('md') == '1224') echo 'es ist Weihnachten';

                    oder vielleicht sogar besser:

                    if (date('md') === '1224') echo 'es ist Weihnachten';

                    Das stelle ich mal zur Diskussion.
                    Sven hatte ja zum Glück in https://forum.selfhtml.org/?t=205625&m=1394357 darauf hingewiesen, dass es sich hier um Strings handelt. Anderenfalls würden auch die führenden Nullen Probleme bereiten...

                    Liebe Grüße aus dem schönen Oberharz

                    Tom vom Berg

                    --
                     ☻_
                    /▌
                    / \ Nur selber lernen macht schlau
                    http://bergpost.annerschbarrich.de
                  3. Hi,

                    $Tag = date("d");
                    $Monat = date("m");

                    Und nun kommt der nächste Fehler, den man aber nicht sofort sieht. Aber er kann zu recht witzigen Ergebnissen führen. Da während der Ausführung des Programmes der Timestamp weiterläuft, beziehen sich die beiden oben angewandten Funktionen nicht (nicht immer) auf denselben Timestamp.

                    Na da wirst du aber ziemlich lange warten müssen, bis es was zu lachen gibt ...

                    MfG ChrisB

                    --
                    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
                    1. Hello,

                      Hi,

                      $Tag = date("d");
                      $Monat = date("m");

                      Und nun kommt der nächste Fehler, den man aber nicht sofort sieht. Aber er kann zu recht witzigen Ergebnissen führen. Da während der Ausführung des Programmes der Timestamp weiterläuft, beziehen sich die beiden oben angewandten Funktionen nicht (nicht immer) auf denselben Timestamp.

                      Na da wirst du aber ziemlich lange warten müssen, bis es was zu lachen gibt ...

                      Ich würde eher vermuten, dass man diese Art von Fehlern gar nicht oder nur sehr schwer finden kann. Z.B. bei der Zählung von Isotopen fallen sie allerdings ins Gewicht...

                      Ich darf dann immer nach den Fehlern suchen. TOCTTOU und multiple Funktionsaufrufe sind prädestiniert für derartige Fehler.

                      Liebe Grüße aus dem schönen Oberharz

                      Tom vom Berg

                      --
                       ☻_
                      /▌
                      / \ Nur selber lernen macht schlau
                      http://bergpost.annerschbarrich.de
                      1. Hi,

                        $Tag = date("d");
                        $Monat = date("m");

                        Und nun kommt der nächste Fehler, den man aber nicht sofort sieht. Aber er kann zu recht witzigen Ergebnissen führen. Da während der Ausführung des Programmes der Timestamp weiterläuft, beziehen sich die beiden oben angewandten Funktionen nicht (nicht immer) auf denselben Timestamp.

                        Na da wirst du aber ziemlich lange warten müssen, bis es was zu lachen gibt ...

                        Ich würde eher vermuten, dass man diese Art von Fehlern gar nicht oder nur sehr schwer finden kann.

                        Na ja, bis sich vom 24. aus der Monat ändert, muss dein Script aber schon einen ziemlich langen sleep einlegen ...

                        Ist mal wieder einer der Fälle, wo in der Theorie zwar durchaus Recht hast - aber in der Praxis und im konkreten Fall die Bedeutung des Hinweise doch eher gegen Null geht.

                        MfG ChrisB

                        --
                        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  5. Hi there,

    Hallo,
    ich möchte an Weihnachten mein Überschriftsbild verändern.

    Recht hast Du, kann man nicht früh genug damit anfangen...

  6. Grüße,
    machs manuell - oder zumindest über ein cronjob. diese prüfung in jedem aufruf zu haben, ist umwältverschmutzung pur.
    MFG
    bleicher

    --
    __________________________-

    FirefoxMyth
  7. @@Simsso:

    nuqneH

    $Monat = ("n");

    ?? Da fehlt wohl was.

    if ($Tag = "24" && $Monat = "12")

    Weihnachten ist übrigens nicht am 24. Dezember.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Hallo,

      Weihnachten ist übrigens nicht am 24. Dezember.

      kommt drauf an[tm].
      Sicher, vom offiziellen Standpunkt aus ist Weihnachten am 25.12., aber im Volksmund gilt eigentlich der 24. als "Weihnachten" - auch wenn es genaugenommen nur "Heiligabend" oder "Christmas Eve", also der Vorabend von Weihnachten ist.

      Ich betrachte übrigens auch den 24. als Weihnachten, die zwei darauffolgenden gesetzlichen Feiertage nur als willkommene Zugabe zum Urlaub, den man sowieso meist vom 24.12. bis einschließlich 06.01. nimmt.

      Frohe Weihnachten,
       Martin

      --
      Um mit einem Mann glücklich zu werden, muss eine Frau ihn sehr gut verstehen und ein bisschen lieben.
      Um mit einer Frau glücklich zu werden, muss ein Mann sie sehr lieben und darf gar nicht erst versuchen, sie zu verstehen.
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. @@Der Martin:

        nuqneH

        […] aber im Volksmund gilt eigentlich […]

        Gotcha!! Wer war denn gleich Der*, dem der Volksmund egal ist? Oder besser gesagt, nicht egal, wenn der Volksmund Unsinn redet: „Batterie“ … Verstrickst du dich gerade in Widersprüche?

        […] den man sowieso meist vom 24.12. bis einschließlich 06.01. nimmt.

        Andere Ländle, andere Sitten.

        Qapla'

        * spelling intended ;-)

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. Hallo,

          […] aber im Volksmund gilt eigentlich […]
          Gotcha!! Wer war denn gleich Der*, dem der Volksmund egal ist? Oder besser gesagt, nicht egal, wenn der Volksmund Unsinn redet: „Batterie“ … Verstrickst du dich gerade in Widersprüche?

          nein, ich stelle nur wertneutral fest, dass in diesem Punkt anscheinend ein großer Teil der Bevölkerung meine Ansicht teilt.

          […] den man sowieso meist vom 24.12. bis einschließlich 06.01. nimmt.
          Andere Ländle, andere Sitten.

          Ja, ich weiß, dass Epiphanias kein bundeseinheitlicher Feiertag ist. Hier im Ländle ist es aber einer. Wowereit.

          Ciao,
           Martin

          --
          Ich stehe eigentlich gern früh auf.
          Außer morgens.
          Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          1. @@Der Martin:

            nuqneH

            nein, ich stelle nur wertneutral fest, dass in diesem Punkt anscheinend ein großer Teil der Bevölkerung meine Ansicht teilt.

            Der Fakt, dass es tatsächlich einen solchen Punkt gibt, ist eher Anlass zu Überraschtheit denn zu Wertneutralität. ;-)

            Qapla'

            --
            Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
            (Mark Twain)