TED116: Datumsproblem

Hallöle,

ich bin gerade dabei ein PHP3 Skript zu schreuben, welches aus einer MySQL DB aktuelle Nachrichten ausliest und im Intranet darstellt. Dabei sollen nur die Nachrichten der letzten 14 Tage angezeigt werden.
Das Datum in der DB wird im Format d-m-Y gespeichert.

Nun habe ich es mit folgender Syntax probiert:

$dat1=date("d-m-Y");   #heutiges Datum
$datum=$dat1;
$datum=explode("-",$datum);

echo "first: $dat1<br>";
echo "$datum[0].$datum[1].$datum[2]";
$toweeks=date("d-m-Y",mktime(0,0,0,$datum[0]-14,$datum[1],$datum[2]));
echo "<br>second:$toweeks"; # = Datum 2 wochen NACH $datum

Leider kommt folgender Wert dabei heraus:
first: 31-07-2000
31.07.2000
second:07-05-2001

Was ist falsch? Wie errechne ich ein neues Datum, welches 14 Tage früher liegt? Oder sehe ich den Wald vor lauter Bäumen nicht und habe einen Fehler übersehen?

Danke für Eure Hilfe und Tschö
TED116

  1. wie das mit php geht, weiß ich ohne doku auch nicht. auf jeden fall kannst du das aber auch von mysql machen lassen. das sollte geh schneller sein. mysql kennt da eine menge von funktionen zur zeitaddition/subtraktion.
    ronny

    1. wie das mit php geht, weiß ich ohne doku auch nicht. auf jeden fall kannst du das aber auch von mysql machen lassen. das sollte geh schneller sein. mysql kennt da eine menge von funktionen zur zeitaddition/subtraktion.
      ronny

      Richtig, aber nur wenn das Feld ein Datumsfeld ist und das format standardmässig Y-m-d ist

      @ted116:
      Dein erster Fehler:
      MKtime die reihenfolge ist: sec,min,h,MONAT,tag,jahr
      (siehe: http://www.php.net/manual/function.mktime.php

      Dein zweiter Fehler:
      Das datum in mysql sollte Y-m-d haben.

      Und überhaupt, du machst dir die sache etwas schwer:

      $today=date("d-m-Y");
      $pasttime=date("d-m-Y",mktime(0,0,0,date("m"),date("d")-14,date("Y")));

      SELECT ...FROM.... WHERE datum>='$pasttime' AND.....

      dein Problem ist jetzt, das du wahrscheinlich noch nach datum sortieren möchtest, zb. das aktuellste oben, so wie du es notierst geht es nicht.
      bei Y-m-d wäre es ganz leicht :-)

      Ich an deiner stelle würde das datumsfeld neu machen also auf feldtyp DATE (evt solgar DATETIME (je nach intervall der "news") und dann richtig formatiern))

      lg
      Ludwig

      1. Richtig, aber nur wenn das Feld ein Datumsfeld ist und das format standardmässig Y-m-d ist

        datums bzw. zeitfelder sollte man wohl grundsätzlich für solche angaben verwenden. selbst wenn man mit unix-format (long) arbeitet, kann imho mysql aber damit rechnen.
        ansonsten speichert mysql das datum immer in y-m-d ab. es kann zwar teilweise auch andere formate verarbeiten, aber wenn ich das manual richtig verstanden habe, ist die normale darstellung immer y-m-d.
        ronny

        1. DANKE.

          Es funktioniert jetzt!

          Gruß, TED116