Datum und Zeit kleiner als jetzt

DerMadman

Grünschnabel
Hi LEuds Ich hoffe jemand kann mir helfen:

Ich will 2 Datums (Die Mehrzahl ist Daten aber das wäre jetzt verwirend:-) ) vergleichen. Wenn ich sage:

PHP:
$a =   getdate();
     $b ="$a[year]-$a[mon]-$a[mday] $a[hours]:$a[minutes]:$a[seconds]";
     $c=date("2004-5-15 14:30:30");
     if ($b<$c){
     
        echo " $b < $c";
     }
     else {
     echo " $b>$c ";
     }
Haut das hin.

Aber da ich das zweite Datum ($c) aus einer MYSQL Datenbank holen will, in der es so steht:
2004-05-15 14:30:30
kann ich es durch die 05 nicht vergleichen. Irgendwie verträgt sich dabei das$a[mon] (welches 5 ist) und ($c welches 05 ist) nicht...

Ich hoffe ich habe mein Problem verständlich erklärt
:)

Vielen Dank schonmal für eure Antworten
 
Ich würde dir empfehlen, das Datum in der Datenbank als timestamp (Datentyp INT) zu speichern. Damit ist das Vergleichen sehr viel einfacher.

Gruß, Wawe
 
Mach es einfach so:

Hol dir den Zeitstring aus der Datenbank,
Wandle ihn mit mktime()
in einen Unxi Timestamp um.
Und dann vergelichst du ihn mit dem aktuellen Unix Timestamp via time().

PHP:
if(mktime(,,,,) > time())
  echo "Yessss";
else
  echo "Verfehlt";

Gruß

RedWing
[edit]

Da war wohl jemand schneller ;)

[/edit]
 
Ich habe mir mal zum besseren verständnis für mich ein kleines testprog geschreiben Und siehe da: Ich verstehe es gar nicht... Vieleicht hab ich nen doofen Fehler gemacht oder so deshalb poste ich das hier auch noch mal:

PHP:
<?php
     $a=time();
     $c=date("h,i,s,m,d,Y");
     $b=mktime($c);
  echo "$a <br> $b";
?>

Die Ausgabe ist:
1084630474
1084587274

Aber eigentlich müsste das doch dann übereinstimmen oder?
 
du kannst es durchausin der Datenbank als datetime belassen und musst es nicht in int umwandeln, sondern zum Vergleichen nur das datetimefeld dann später als unixtimestamp ausgeben...

um das datetimefeld in einen timestamp auszugeben, würde dein select statement dann so aussehen:
Code:
SELECT UNIX_TIMESTAMP(`dein_datums_feld`) AS `datumsfeld` FROM...

somit hast du direkt einen timestamp und kannst ihn dann mit time() in php vergleichen:
Code:
//Daten aus mySQL-DB auslesen
....

//`datumsfeld` steht nun in Variable $a
if( time() < $a )
        echo "gefunden";
else
        echo "nicht gefunden";

wenn du mySQL ab 4.1.1 einsetzt, kannst du den Datumsvergleich direkt der Datenbank überlassen...
 
Ich habs mal was getestet und zwar wenn ich sage 2004-05-18 dann kann ers vergleichen, aber wenn ich sage 2004-5-18 geht es nicht mehr... wie bekomme ich immer 2 stellen angezeigt?
 
Zurück