Timestamp vergleich

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

  • Timestamp vergleich

    Hallo Leute,

    ich habe ein kleines Problem und hoffe auf einen Tipp von den Profies ;-)

    Ich habe folgenden Code :
    PHP-Code:
    $sql "SELECT *,DATE_FORMAT(lizenz_end,'%d.%m.%Y') as new_lizenz_end  FROM ".$tbl_users." WHERE id='$id' OR username='$id'";
    $res mysql_query($sql);
    $lizenzend = @mysql_fetch_array($res);
    echo 
    "<h4>";
    echo 
    "Lizenzende : ".$lizenzend['new_lizenz_end'];
    echo 
    "<br></h4>";
    list(
    $day,$month,$year)=explode(".",$lizenzend['new_lizenz_end']);
    $timestamp mktime(0,0,0,$day,$month,$year);
    if(
    $timestamp <= time())
    {
    echo 
    "LIZENZ ABGELAUFEN";
    }
    else
    {
    echo 
    "LIZENZ IST GÜLTIG";

    Hier soll aus einer DB ein Datum im Format DATE gelesen werden in einen Timestamp umgewandelt und mit dem aktuellen Datum verglichen werden.

    Wenn das ausgelesene Datum kleiner oder gleich dem aktuellen ist soll der Satz ->LIZENZ ABGELAUFEN<- ausgegeben werden, ansonsten ->LIZENZ IST GÜLTIG<- !

    Doch leider wird IMMER ->LIZENZ IST GÜLTIG<- ausgegeben.

    Danke und Gruss Alf

  • #2
    vielleicht machst du die umwandlung mal etwas einfacher: strtotime() ist ne geile sache .)
    h.a.n.d.
    Schmalle

    http://impressed.by
    http://blog.schmalenberger.it



    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
    ... nur ohne :-)

    Kommentar


    • #3
      Hallo und einen schönen dritten Advent,

      nun habe ich folgenden Code genutzt :
      PHP-Code:
      $sql "SELECT *,DATE_FORMAT(lizenz_end,'%d.%m.%Y') as new_lizenz_end  FROM ".$tbl_users." WHERE id='$id' OR username='$id'";
      $res mysql_query($sql);
      $lizenzend mysql_fetch_array($res);
      echo 
      "Lizenzende : ".$lizenzend['new_lizenz_end'];
      timestamp=strtotime($lizenzend['new_lizenz_end']);
      echo 
      $timestamp;
      if(
      $timestamp <= time())
      {
      echo 
      "LIZENZ ABGELAUFEN";
      }
      else
      {
      echo 
      "LIZENZ IST GÜLTIG";

      Jedoch habe ich hier den gleichen Effekt !

      Danke und Gruss Alf

      Kommentar


      • #4
        die wo da so php machen tun tun
        int strtotime ( string time [, int now])

        Diese Funktion erwartet einen String mit einem Datum im englischen Format und versucht, diesen in einen UNIX-Timestamp umzusetzen. Versucht wird dies relativ zu dem Timestamp, den Sie mit now angeben. Fehlt diese Angabe, wird die aktuelle Zeit angenommen. Schlägt die Umwandlung fehl, wird -1 zurückgegeben.
        das mit dem englischen format hast du schon gelesen oder?

        geht nicht vielleicht auch
        Code:
        SELECT 
          *,
          DATE_FORMAT(lizenz_end,'%d.%m.%Y') new_lizenz_end,
          IF(lizenz_end<NOW(), 0, 1) valid
        FROM
          ...
        dann sollte in $row['new_lizenz_end']das ablaufdatum stehen und in $row['valid'] ne 1 oder ne 0 je nachdem, ob die lizenz abgelaufen is oder nich
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          aber wäre es nicht einfacher, wenn man nicht das datum formatiert speichert, sondern den timestamp?

          dann wäre es viel viel einfacher und man würde code sparen...

          Kommentar


          • #6
            Hallo,

            die Idee von 'mrhappiness' war Super und hat soweit auch geklappt.
            Ich muss nun nur noch eine AUsgabeschleife machen.

            Spricht denn irgendwas gegen diese Lösung ?

            Gruss und Danke Alf

            Kommentar


            • #7
              aber wäre es nicht einfacher, wenn man nicht das datum formatiert speichert, sondern den timestamp?
              das lustige ist ja, das alf das glaube ich schonmal machen wollte. damals (vor zwei Wochen oder so) haben wir ihm das aber ausgeredet, weil datetime für sein ziel um einiges besser geeignet war. dass er jetzt wieder mit timestamps rumtorkelt kann ja keiner wissen.

              sollte man sich gefälligst vorher ein paar gedanken darüber machen, was man will, dann klappts auch mit dem programmieren.

              aber der code von happy sieht ja durchaus in ordnung aus. ob man mit datetime oder mit timestamp arbeitet ist letztendlich egal.

              achso, @w4s1: ein DATETIME würde ich nicht als formatiert bezeichnen. Formatiert wäre meiner meinung "1.12.2003", oder "So. 14.12." oder so. mit DATETIME lässt sich ja noch wunderbar arbeiten.

              Kommentar


              • #8
                Es ist richtig dass wir schoneinmal darüber geredet hatten
                und mir nahe gelegt wurde DATE zu nutzen, wollte ich ja auch
                bzw. habe ich ja auch in meiner DB so gemacht ( wie von Euch
                empfohlen ), nur muss ich damit weiterarbeiten wie jetzt z.B.
                ein Ablaufzeitraum zu deklerieren.

                Aber trotzdem ALLEN, ob von diesen Posts oder denen vor
                zwei Wochen 1000x Mal Danke für die Hilfe und ich werde
                Euch in mein Nachtgebet einschliessen **grins**

                Gruss und Danke Alf

                Kommentar


                • #9
                  Jemand zufäälig noch eine Idee wegen der Textausgabe ?
                  PHP-Code:
                  $sql "SELECT *,DATE_FORMAT(lizenz_end,'%d.%m.%Y') new_lizenz_end,IF(lizenz_end<NOW(), 0, 1) valid FROM ".$tbl_users." WHERE id='$id' OR username='$id'";
                  $res mysql_query($sql);
                  $lizenzend = @mysql_fetch_array($res);
                  echo 
                  "<h4>";
                  echo 
                  "Lizenzende : ".$lizenzend['new_lizenz_end'];
                  echo 
                  "<br></h4>";
                  echo 
                  "Lizenstatus: ".$lizenzend['valid'];
                  if(
                  $lizenzend['valid'] = 0)
                  {
                  echo 
                  "LIZENZ ABGELAUFEN";
                  }
                  else
                  {
                  echo 
                  "LIZENZ IST GÜLTIG";

                  klappt nicht !

                  Gruss und Danke Alf

                  Kommentar


                  • #10
                    Stellt sich mir natürlich sobutz die Frage ... wenn Du unbedingt 'nen Timestamp haben willst warum holst Du Dir nicht einfach 'nen Timestamp aus der Datenbank ... UNIX_TIMESTAMP(lizenz_end) ... sollte genau den liefern.
                    carpe noctem

                    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                    Kommentar


                    • #11
                      prüfen, ob eine variable den wert 0 hat, machst du mit == und nicht mit =
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        warum sagst du klappt nicht, wenn du meinst "es kommt immer lizenz abgelaufen"? Ist es so schwer ne ordentliche Problembeschreibung zu lifern?

                        außerdem mal bitte augen auf machen!
                        PHP-Code:
                        if($lizenzend['valid'] = 0// allways TRUE 

                        Kommentar

                        Lädt...
                        X