BiggiM: Datumsabhängige Ausgabe

Hallo und guten Tag,
leider bin ich ganz neu in PHP und verstehe vieles noch nicht.
Folgendes: Ich möchte eine Webseite von SSI auf PHP umstellen und suche eine Möglichkeit, datumsabhängige Ausgaben in PHP zu realisieren. Mit SSI ist das ja ganz einfach.

Mit PHP habe ich jetzt folgendes:

<?php
if ((date("dmY")>= 19092005) AND (date ("dmY") <=31102005)) {
?>
<h4>Überschrift1</h4>
<p>Text1</p>
<?php
}
?>
<?php
if ((date("dmY")>= 07102005) AND (date ("dmY") <=11112005)) {
?>
<h4>Überschrift2</h4>
<p>Text2</p>
<?php
}
?>
usw.
Die Nachrichten sollen nur innerhalb des angegebenen Zeitraums ausgegeben werden.
Das funktioniert aber nicht zuverlässig. Offenbar wird das Datum nicht als Datum ausgelesen, sondern als Ganzzahl, was zwar logisch ist, aber nicht das, was ich will.

Vielen Dank schon mal für Hilfe.

Biggi

  1. Hallo,

    Das funktioniert aber nicht zuverlässig. Offenbar wird das Datum nicht als Datum ausgelesen, sondern als Ganzzahl, was zwar logisch ist, aber nicht das, was ich will.

    date() gibt einen String zurück!
    http://de3.php.net/manual/de/function.date.php

    Was spricht denn gegen:
    if(strtotime(date("Y-m-d")) >= strtotime("2005-19-09") ) usw.

    Grüße, Ulli

  2. Liebe BiggiM,

    if ((date("dmY")>= 19092005) AND (date ("dmY") <=31102005)) {

    das sieht aus, als ob es nie und nimmer zuverlässig klappen könnte.

    Beispiel: 17.12.2005 => 17122005 ist kleiner als 19092005, obwohl das Datum an sich später ist. Daher greift Dein Vergleich nicht, da er an der ersten Bedingung scheitert.

    Probiere es doch rückwärts: 19.09.2005 => 2005-09-19 => 20050919. Damit kannst Du zuverlässig eine größer/kleiner-Prüfung durchführen.

    if (date("Ymd") >= 20050919 && date("Ymd") <= 20051231)

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

  3. Hi,

    <?php
    if ((date("dmY")>= 19092005) AND (date ("dmY") <=31102005)) {
    ?>
    <h4>Überschrift1</h4>

    was soll das sein? Du beendest den PHP-Breich (ohne die { zu schließen) und fährst mit normaler HTML-Ausgabe fort?

    freundliche Grüße
    Ingo

    1. Hallo Ingo.

      <?php
      if ((date("dmY")>= 19092005) AND (date ("dmY") <=31102005)) {
      ?>
      <h4>Überschrift1</h4>
      was soll das sein? Du beendest den PHP-Breich (ohne die { zu schließen) und fährst mit normaler HTML-Ausgabe fort?

      Bedauerlicherweise ist dies in der Tat möglich. Der HTML-Code wird also nur ausgegeben, wenn die Bedingung zutrifft.
      Bedauerlicherweise, weil dies IMO eine sehr unsaubere Programmierweise ist.

      Einen schönen Montag noch.

      Gruß, Ashura

      --
      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
      „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
      [HTML Design Constraints: Logical Markup]
      1. Hi,

        Bedauerlicherweise ist dies in der Tat möglich. Der HTML-Code wird also nur ausgegeben, wenn die Bedingung zutrifft.
        Bedauerlicherweise, weil dies IMO eine sehr unsaubere Programmierweise ist.

        echt? Wie konnte man sowas bloß implementieren?

        freundliche Grüße
        Ingo

        1. echo $begrüßung;

          Bedauerlicherweise ist dies in der Tat möglich. Der HTML-Code wird also nur ausgegeben, wenn die Bedingung zutrifft.
          Bedauerlicherweise, weil dies IMO eine sehr unsaubere Programmierweise ist.

          echt? Wie konnte man sowas bloß implementieren?

          Damals mit Perl, später mit C.

          Aber im Ernst, es gibt zwei Möglichkeiten, PHPs Control structures und HTML zu verknüpfen:

          Ansonsten müsste man sich echo/print oder der Heredoc syntax bedienen und dabei ggf. auf HTML-Syntax-Highlighting im Editor verzichten.

          echo "$verabschiedung $name";

          1. Hi,

            das finde ich total "krank". Es widersprich mMn jeglicher Logik einer Verschachtelung. Zum Glück gibt's das z.B. bei HTML und Javascript nicht. Oder etwa doch:
            <script type="text/javascript">if(true){</script><p>wahr</p><script type="text/javascript">}</script> ? Wer würde bloß auf so eine Idee kommen?

            das schaut dagegen sehr gut aus, wenn auch nur eingeschränkt nutzbar.

            freundliche Grüße
            Ingo

    2. Hi,

      <?php
      if ((date("dmY")>= 19092005) AND (date ("dmY") <=31102005)) {
      ?>
      <h4>Überschrift1</h4>
      was soll das sein? Du beendest den PHP-Breich (ohne die { zu schließen) und fährst mit normaler HTML-Ausgabe fort?

      freundliche Grüße
      Ingo

      Nee, das ist nur ein Code Schnippsel, der durchaus noch beendet wird, habe ich nur nicht (weil ich das für selbstverständlich hielt) mitgepostet. Der Vollständigkeit halber:

      <?php
      }
      ?>

      Gruß Biggi