DB-Einträge der letzten 7 Tage auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • DB-Einträge der letzten 7 Tage auslesen

    Hallo zusammen!
    Bin seit Tagen daran ein Script zu schreiben mit dem ich die Einträge aller meiner vorhandenen Datenbanken der letzten 7 Tage auslesen und auf der Seite aktuell.php ausegeben kann. In jeder Datenbak ist ein Feld "eintragsdatum" vorhanden. Nun muss ich ja diese Datum auslesen und PHP 7 Tage zurückrechnen lassen oder? Hab aber noch keine Ahnung wie die Abfrage letzendlich aussehen muss... Kann mir jemand weiterhelfen?

  • #2
    Du hast aber schon mal vorher gesucht und bist auf so sachen wie DATE_SUB() gestoßen?

    Kommentar


    • #3
      Ehrlich gesagt nö... Hab aber gerade auf de.php.net danach gesucht und nix gefunden. Aber mal ne andere Frage: Wie kann ich vom aktuellen Datum 7 Tage zurückrechnen?? Hab nur das hier gefunden:
      <? echo DATE_SUB(NOW(), INTERVAL 7 DAY) > dates"); ?>
      Das funktioniert aber nicht...
      Bin Dir über ne hilfreiche Antwort echt dankbar...

      Kommentar


      • #4
        RFTM! Sieh im SQL-Manual nach, bei den Datums- und Zeitfunktionen, zum Thema DATE_SUB.
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Erstens heisst das RTFM und nicht RFTM und zweitens würde ich nicht meine Zeit verschwenden und hier posten wenn ich nicht schon nachgesehen hätte und mir die Erklärung dazu weitergeholfen hätte. Vielen Dank auch...

          Kommentar


          • #6
            Richtig - und nicht nur das. Du verschwendest auch unsere Zeit. Die Zeitberechnung kannst Du bequem per SQL durchführen, wenn Du allerdings nicht willens bist, Dir das Manual durchzulesen, wird es niemand für Dich tun.

            Wenn Du etwas nicht verstanden hast, dann stell eine konkrete Frage. 'Funktioniert nicht' ist keine hilfreiche Aussage. DATE_SUB ist genau das, was Du brauchst - wo also ist Dein Problem?

            €: Und wenn Du neben Deiner offensichlichen Faulheit auch noch den Leuten blöd kommst, die Dir helfen wollen, wirst Du wohl bald niemanden mehr finden, der das tun möchte.
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              Ich würde zu jedem Eintag nen timestamp abspeichern. Dann einfach mit

              ...
              WHERE time > '".time() - 604800."'
              ...

              604800 Sekunden müsste eine Woche habe, wenn ich mich nich verrechnet habe ...

              Kommentar


              • #8
                Nö, ein sql-timestamp ist wie ein sql-DATETIME, und nicht wie ein php-timestamp.

                Unterschied sql-timestamp und sql-datetime ist die automatische Verarbeitung (genauestens: Speicherung und Nachführung) des ersteren. Die sql-Darstellung ist bei beiden 0000-00-00 00:00:00 und 11112233445566 .

                Unterschied in der internen sql-Speicherung kann sein, ist aber nicht von bedeutung.

                Ich denke die Beispiele unter DATE_ADD im sql Manual sind ausreichend gut. Das Thema gehört zu den in tutorials und Büchern vernachlässigten darum hast Du beim Suchen nichts gefunden.
                Zuletzt geändert von phoenix20; 01.06.2006, 15:35.

                Kommentar


                • #9
                  <? echo DATE_SUB(NOW(), INTERVAL 7 DAY) > dates"); ?>

                  Dasss das nicht funktioniert ist zutreffend.

                  Kommentar


                  • #10
                    Wenn das Feld eintragsdatum den Feldtyp DATE, DATETIME oder TIMESTAMP hat. (und nicht INT und dergleichen)

                    PHP-Code:
                    Varianten mit +/-:
                    SELECT FROM TABLE WHERE (eintragsdatum >= NOW() - INTERVAL 1 WEEK)

                    SELECT FROM TABLE WHERE (eintragsdatum >= NOW() - INTERVAL 7 DAY)

                    berücksichtigt nur Datum ohne Zeit:
                    SELECT FROM TABLE WHERE (eintragsdatum >= DATE(NOW()) - INTERVAL 7 DAY)

                    Variante mit Funktion:
                    SELECT FROM TABLE WHERE (eintragsdatum >= DATE_SUB(NOW(), INTERVAL 7 DAY)) 
                    + und - funktionieren wenn der zweite Operand die Form INTERVAL expr type hat. Sie haben die Bedeutung von DATE_ADD, ADDDATE DATE_SUB, SUBDATE.

                    Vergleichsoperatoren wie >= funktionieren auf DATE, DATETIME und TIMESTAMP (als strings).

                    Kommentar


                    • #11
                      Hab jetzt noch nen Wurm drin...
                      Bekomm die Fehlermeldung:

                      mysql_fetch_object(): supplied argument is not a valid MySQL result resource in Line...

                      Mein Code sieht jetzt so aus:

                      mysql_select_db("datenbank");
                      $abfrage="SELECT * FROM texte WHERE (eintragsdatum >= DATE(NOW()) - INTERVAL 7 DAY)";
                      $ergebnis=mysql_query($abfrage);
                      while($row=mysql_fetch_object($ergebnis))
                      {
                      echo...

                      Kommentar


                      • #12
                        Regeln lesen und dortige Hinweise umsetzen.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Hab meine Abfrage gem. den Regeln geändert.
                          Jetzt erhalte ich folgende Fehlermeldung:


                          You have an error in your SQL syntax.
                          Check the manual that corresponds to your MySQL server version for the right syntax to use near '(NOW())- INTERVAL 7 DAY)' at line 1

                          SELECT * FROM wdb WHERE (eintragsdatum >= DATE(NOW())- INTERVAL 7 DAY)
                          Zuletzt geändert von golfer69; 01.06.2006, 17:02.

                          Kommentar


                          • #14
                            SELECT * FROM wdb WHERE (eintragsdatum >= DATE(NOW())- INTERVAL 7 DAY)

                            die syntax ist richtig (mysql5).

                            feldtyp von eintragsdatum?

                            Kommentar


                            • #15
                              mysql manual, 12.5 Date and Time Functions, allererstes (aber auch gerade einziges) Beispiel:
                              SELECT something FROM tbl_name
                              WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;

                              Kommentar

                              Lädt...
                              X