Problem mit Datum

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

  • Problem mit Datum

    Hallo,

    ich habe ein kleines Problem mit dem Vergleich von 2 Daten

    PHP-Code:
        <?
        $subbase = "'".$_GET["sub"]."'";
        $query = "SELECT * FROM tp_banner WHERE cat = $cat AND sub = $subbase";
        $result=mysql_query($query);
            while ($daten=mysql_fetch_array($result, MYSQL_ASSOC))
            {
            $datum_banner = explode('-', $daten[date]);
            $datum_banner_jahr = $datum_banner[0] + $daten[years];
            if (date("d-m-Y") <= date("d-m-Y", mktime(0, 0, 0, $datum_banner[2], $datum_banner[1], $datum_banner_jahr))) {
            echo "<a href=\"".$daten[link]."\" target=\"_blank\" border=\"0\">";
            echo "<img src=\"".$daten[img]."\">";
            echo "</a>";
            }
            }
        ?>
    es soll überprüft werden ob die Grafik noch nicht "ausgelaufen" ist - sprich der Banner für den angegebenen Zeitpunkt noch gebucht ist

    in der Datenbank ist das Datum des Tages an dem der Buchungsauftrag erteilt wurde angegeben und die Jahre für die der Banner gebucht ist

    nun gut ich habe es mittels explode zerlegt, die Anzahlt der Jahre zu $datum_banner[0] dazugezählt, beispeil: 2005 + 2 = 2007 also 2007 läuft der Banner aus

    danach habe ich einfach das Datum wieder zusammengesetzt und mit dem heutigen verglichen

    aber das klappt irgendwie nicht ? k/a was falsch läuft

    das Datum stimmt am Schluß nicht mehr - aus 28.3.2005 wird 4.3.2009 und das kann ja nicht stimmen, der Fehler muss im mktime liegen - davor ist alles noch richtig habe es mittels ausgabe der variablen überprüft

    achja das datum ist im Format 2005-03-28 angegeben

    Danke schonmal !!!
    Zuletzt geändert von joke; 29.03.2006, 12:55.

  • #2
    Re: Problem mit Datum

    Original geschrieben von joke
    das Datum stimmt am Schluß nicht mehr - aus 28.3.2005 wird 4.3.2009 und das kann ja nicht stimmen, der Fehler muss im mktime liegen
    Welches Datumsformat verwendest du in der DB für die Spalte date?
    Bist du dir sicher, dass du mktime auch mit den Parametern in der richtigen Reihenfolge aufgerufen hast (siehe Manual)?

    PHP-Code:
    if (date("d-m-Y") <= date("d-m-Y"mktime(...))) { 
    Das ist Unfug.
    Ein Datum in diesem Format ist nicht vernünftig sortierbar.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      bin ich erst zu spät draufgekommen

      das datum ist im Format 2005-03-28 angegeben
      wie könnte ich es realisieren wenn das unfug ist ?

      Kommentar


      • #4
        Original geschrieben von joke
        wie könnte ich es realisieren wenn das unfug ist ?
        Überlege dir, in welchem Format ein Datum sich durch Stringvergleiche sortieren lassen könnte.


        (Und überlege auch, ob du das überhaupt PHP-seitig machen musst - mit den Datums- und Zeit-Funktionen von MySQL ist sowas ja oftmals auch schon möglich.)
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Danke schonmal

          geht es im Format dd.mm.yy besser zum sortieren ?

          bin in php leider immer noch nicht wirklich fortgeschritten

          mysql kenne ich mich leider noch weniger aus also müsste ich das mit php machen

          wäre nett wenn du mir da kurz helfen könntest damit wenigstens die funktion von oben funktioniert

          Danke !!!

          Kommentar


          • #6
            Original geschrieben von joke
            geht es im Format dd.mm.yy besser zum sortieren ?
            Nein.

            Damit würde immer noch zuerst der Tag verglichen - weil der vorne steht, dann der Monat, dann das Jahr.
            Dass das keine sinnvolle Art sein kann, Datümer zu vergleichen, sollte einleuchten.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              ich Dummerchen

              ok das sortieren klappt jetzt mit Y-m-d

              nur

              PHP-Code:
              date("d-m-Y"mktime(000$datum_banner[2], $datum_banner[1], $datum_banner_jahr)) 
              liefert halt das falsche Datum aus

              die Reihenfolge die ich vorgegeben habe stimmt schon ich weiß nur nicht woraus 4.3.2009 resultiert wenn ich 28.3.2005 als Ursprungsstring habe, außer dem 3. stimmt ja da gar nichts

              kann ich vielleicht sogar ohne mktime zu benutzen die Daten vergleichen ?

              Kommentar


              • #8
                Kontrollausgabe der Parameter, die du an mktime() übergeben hast?
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  $datum_banner[2], $datum_banner[1], $datum_banner_jahr

                  28, 03, 2007

                  wenn ich das mktime ausgeben lasse

                  2009-04-03


                  echt keinen Schimmer was das soll

                  Kommentar


                  • #10
                    Original geschrieben von joke
                    $datum_banner[2], $datum_banner[1], $datum_banner_jahr

                    28, 03, 2007
                    Ich habe dich extra gefragt, ob du mktime mit den Parametern in der richtigen Reihenfolge aufgerufen hast!

                    echt keinen Schimmer was das soll
                    Ich auch nicht!

                    Wenn du Hinweise bekommst - warum ignorierst du diese dann?
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Du machst deinem Nick aber alle Ehre...
                      Was steht denn im Manual zum Thema Reihenfolge der Parameter ? Monat Tag Jahr und was übergibst du ??

                      Gruss

                      tobi

                      dein mktime() stimmt schon denn du willst den 03.28.2007 ausgeben und das ergibt wohl irgendwas im Jahr 2009
                      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
                        ----------------------------------
                        Zuletzt geändert von joke; 29.03.2006, 14:04.

                        Kommentar


                        • #13
                          Original geschrieben von wahsaga
                          Ich habe dich extra gefragt, ob du mktime mit den Parametern in der richtigen Reihenfolge aufgerufen hast!


                          Ich auch nicht!

                          Wenn du Hinweise bekommst - warum ignorierst du diese dann?
                          ich probiers nochmal so

                          Danke dir !!!

                          mein Fehler habe ich wohl zu ungenau die Funktion angeschaut

                          Kommentar


                          • #14
                            Ich persönlich würde ein Timestamp benutzen, damit hast du einfach 10 Ziffern, die du in jeder Form miteinander vergleichen kannst!
                            In der Datenbank brauchst du lediglich ein int(10) feld und mit UNIX_TIMESTAMP() hast du auch eine mysql-funktion an der hand. bei der ausgabe des Datums arbeitest du mit date() und übergibst als zweiten parameter deinen timestamp.

                            Kommentar


                            • #15
                              Original geschrieben von PHP-Desaster
                              Ich persönlich würde ein Timestamp benutzen, damit hast du einfach 10 Ziffern, die du in jeder Form miteinander vergleichen kannst!
                              full ack, meiner meinung nach der einzig vernünftige weg.

                              greets
                              (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                              Kommentar

                              Lädt...
                              X