[PHP5] Datum Älter als best. Tage

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

  • [PHP5] Datum Älter als best. Tage

    Grüß euch!

    In meiner MYSQL Datenbank habe ich "erstellt im Format date" gespeichert.

    Würde jetzt gerne sagen.

    Heute Datum => 20.08.2008
    Erstellt zb. mit der ID 1 => 17.08.2008
    Erstellt zb. mit der ID 2 => 04.08.2008

    Jetzt würde ich gerne sagen.



    Heutige Datum minus 10 Tage dann kommt ein Rufzeichen, wenn es älter
    ist als 10 Tage dann kommt nix.


    Stehe gerade an.


    Danke Chris

  • #2
    Da würde ich einen kombinierten MySql-PHP-Ansatz wählen (du sagst im MySql Date Format gespeichert d.h. YYYY-MM-DD?)
    PHP-Code:
    $sql 'SELECT datum,name FROM tabelle WHERE datum >= '.date('Y-m-d',strtotime('now - 10 days')); 
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Ich würde das nur mit MySQL funktionen machen:

      PHP-Code:
      $sql 'SELECT datum,name FROM tabelle WHERE datum >= DATE_ADD(CURDATE(), INTERVAL -10 DAY)'
      mfg

      Kommentar


      • #4
        Original geschrieben von Blackgreetz
        Ich würde das nur mit MySQL funktionen machen:
        Ich auch, aber nicht mit DATE_ADD, sondern mit DATE_SUB.
        Gruss
        H2O

        Kommentar


        • #5
          Wusst nicht genau, obs noch ne Funktion zum Abziehen gibt, aber stimmt natürlich:

          PHP-Code:
          $sql 'SELECT datum,name FROM tabelle WHERE datum >= DATE_SUB(CURDATE(), INTERVAL 10 DAY)'
          mfg

          Kommentar


          • #6
            Grüß euch,

            danke für eure Tipps.

            Das einzige Problem was jetzt halt noch offen bleibt ist folgendes.

            Meine Aktuelle Abfrage lautet

            PHP-Code:
            SELECT ......... FROM verkaufswagen WHERE art='Neuwagen' and verkauft='' ORDER by 'typ' 'fahrzeugname' 

            Wenn ich aber jetzt euren Befehl anwende

            PHP-Code:
            $sql 'SELECT datum,name FROM tabelle WHERE datum >= DATE_SUB(CURDATE(), INTERVAL -10 DAY)'
            Werden logischerweise die anderen nicht mehr gelistet.

            Darum wollte ich es eigentlich nur mit PHP machen

            Eigentlich sollte das ja auche gehen?

            PHP-Code:
            <?
            $datum12 = $ausgabe->erstellt;
            if($datum12  >= date('Y-m-d',strtotime('now - 10 days')))
            {
                echo "BILD";
            }
            else
            {
                echo "Kein Bild";
            }
            ?>
            Zuletzt geändert von chris86kbg; 20.08.2008, 13:08.

            Kommentar


            • #7
              Und was hindert dich daran, die Spalten in der Query nach deinen Bedürfnissen anzupassen?
              PHP-Code:
              $sql "SELECT ......... FROM verkaufswagen WHERE art='Neuwagen' and
               verkauft='' and datum >= DATE_SUB(CURDATE(), INTERVAL -10 DAY) 
              ORDER by 'typ' , 'fahrzeugname'"

              PHP-Code:
              if($datum12  >= date('Y-m-d',strtotime('now - 10 days'))) 
              afaik geht das so ned, denn PHP weiss ja nicht dass $datum12 ein Datum ist. imho müsstest du $datum12 als UNIX Timestamp haben (kannst du beim Auslesen aus der DB so umformatieren) und dann mit
              PHP-Code:
              strtotime('now - 10 days'); 
              vergleichen
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                Das mit der SQL Checke ich schon, aber es werden ja nur die ausgegeben die nicht älter sind als 10 Tage und das will ich nicht, will einfach eine rufzeichen dazumachen die innerhalb von 10 Tagen sind.

                PHP-Code:
                $timestamp"$ausgabe->erstellt";
                 
                $datum12 date("Y-m-d",$timestamp);
                echo   
                $datum12
                Kommt bei mir dann 1970-01-01
                Aber in der DB steht im Feld erstellt als DATE ===> 2008-08-20


                Thx, Chris

                Kommentar


                • #9
                  Ich nehme mal an, dass $timestamp so wie in der DB in die Var kommt (YYYY-MM-DD)
                  date() verlangt aber als zweiten Parameter einen "richtigen" Timestamp in Sekunden seit 01.01.1970. Wenn du date() etwas bereits formatiertes übergibst dann ist das nicht das was date() erwartet
                  Das mit der SQL Checke ich schon, aber es werden ja nur die ausgegeben die nicht älter sind als 10 Tage und das will ich nicht, will einfach eine rufzeichen dazumachen die innerhalb von 10 Tagen sind.
                  dann lies alle aus der DB die vorhanden sein sollen und setze das Ausrufezeichen beim Ausgeben mittels PHP
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    also ich weiß das man ein formatiertes datum mit mktime() und substr sich zurechtbasteln kann um ein unix timestamp zu erhalten

                    PHP-Code:
                    $datum "2008-08-20";

                    $date_y substr($datum0,4);
                    $date_m substr($datum5,2);
                    $date_d substr($datum8,2);

                    $timestamp mktime(0,0,0$date_m$date_d$date_y);
                    echo 
                    $timestamp#Ausgabe: 1219183200 
                    Gruß
                    Uzu

                    private Homepage

                    Kommentar


                    • #11
                      also ich weiß das man ein formatiertes datum mit mktime() und substr sich zurechtbasteln kann um ein unix timestamp zu erhalten
                      Wieso so kompliziert? Geht so viel einfacher
                      PHP-Code:
                      echo strtotime('2008-04-20'); 
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #12
                        (My)SQL kennt auch eine IF-Abfrge. Schau dieses Beispiel an:
                        Code:
                        $sql = "
                        	SELECT 
                        		...... ,
                        		...... ,
                        		IF(datum >= DATE_SUB(CURDATE(), INTERVAL -10 DAY), 'sofort verschrotten', 'in 10 Tagen verschrotten') AS status
                        	FROM 
                        		verkaufswagen 
                        	WHERE 
                        		art = 'Neuwagen'
                        	AND
                         		verkauft = ''
                        	ORDER by 
                        		typ, 
                        		fahrzeugname";
                        Gruss
                        H2O

                        Kommentar


                        • #13
                          So habe das jetzt mal probiert.

                          Leider kein Erfolg.

                          PHP-Code:
                           <?php
                          $datum 
                          "2008-08-20";

                          $date_y substr($datum0,4);
                          $date_m substr($datum5,2);
                          $date_d substr($datum8,2);

                          $timestamp mktime(0,0,0$date_m$date_d$date_y);

                          if(
                          $timestamp  >= date('Y-m-d',strtotime('now - 10 days')))
                          {
                              echo 
                          "AKTUELL";
                          }
                          else
                          {
                              echo 
                          "NICHT AKTUELL";
                          }
                          ?>
                          Es wird immer "AKTUELL" ausgegeben.

                          Danke Chris

                          Kommentar


                          • #14
                            Original geschrieben von jahlives
                            afaik geht das so ned, denn PHP weiss ja nicht dass $datum12 ein Datum ist. imho müsstest du $datum12 als UNIX Timestamp haben (kannst du beim Auslesen aus der DB so umformatieren) und dann mit
                            PHP-Code:
                            strtotime('now - 10 days'); 
                            vergleichen
                            Man kann Datum und/oder Zeit auch als String vergleichen.

                            Kommentar


                            • #15
                              strtotime('now - 10 days') müsste gegen die wand rennen
                              http://de.php.net/strtotime
                              strtotime erwartet ein datum im amerikanischen format
                              und mein beispiel kannst du weder entsorgen und das von jahlives benutzen
                              Gruß
                              Uzu

                              private Homepage

                              Kommentar

                              Lädt...
                              X