Ik probeer dus een script te maken dat checked of de start date wel eerder is dan de end date maar het wil niet lukken. Ik heb 3 velden per date (dd-mm-jjjj) en dit script:

<?php
$start = date("m-d-Y",mktime(0,0,0, $TsM,$TsD,$TsJ));
$end = date("m-d-Y",mktime(0,0,0, $TeM,$TeD,$TeJ));
if($end < $start){
$_SESSION['formerror'] = "Paniek<br />";
}
?>

Die $TsM etc. zijn $_POST waarden van de velden.
Dit script geeft bij bijvoorbeeld deze data een "Paniek" error:
start: 11-12-2010
end: 09-10-2011
..omdat maand en dag kleiner zijn, maar hij kijkt blijkbaar niet naar het jaar. Zelfde geldt voor:
start: 11-12-2010
end: 15-10-2011
Ha Martijn,

Dit zou moeten werken.

<?php
$start = date('m-d-Y',strtotime($TsM.'-'.$TsD.'-'.$TsJ));
$end = date('m-d-Y',strtotime($TeM.'-'.$TeD.'-'.$TeJ));
if($end < $start){
$_SESSION['formerror'] = "Paniek<br />";
}
?>
Het moet zijn:


<?php
$start = mktime(0,0,0, $TsM,$TsD,$TsJ);
$end = mktime(0,0,0, $TeM,$TeD,$TeJ);

    if($end < $start){
        $_SESSION['formerror'] = "Paniek<br />";
    }

?>


(je kan dus in dit geval beter met een Unix timestamp werken om te vergelijken)
Ga niet zelf klooien. Gebruik php.

[php]datetime[/php].
Karl Karl op 14/12/2010 22:01:13

Ga niet zelf klooien. Gebruik php.

[php]datetime[/php].


Dat is zeker aan te raden, maar ik denk dat de TS hier nog niet klaar voor is (maar ik kan het mis hebben natuurlijk).
Arjen - op 14/12/2010 22:02:18

[quote="Karl Karl op 14/12/2010 22:01:13"]
Ga niet zelf klooien. Gebruik php.

[php]datetime[/php].


Dat is zeker aan te raden, maar ik denk dat de TS hier nog niet klaar voor is (maar ik kan het mis hebben natuurlijk).
[/quote]

Toen je ging fietsen was je er ook niet klaar voor (want je kon niet fietsen).
Door het te doen leer je het.
Zo ken ik er ook nog wel één: Als je een auto koopt maar je hebt nog geen rijbewijs, dan heb je weinig aan die auto....

Jij hebt toch ook niet eerst de middelbare school gedaan en daarna pas de basisschool (alhoewel ik soms denk dat dit wel het geval is).
Arjen - op 14/12/2010 22:07:33

Zo ken ik er ook nog wel één: Als je een auto koopt maar je hebt nog geen rijbewijs, dan heb je weinig aan die auto....

Jij hebt toch ook niet eerst de middelbare school gedaan en daarna pas de basisschool (alhoewel ik soms denk dat dit wel het geval is).


Dat een diff doen met datetime heel simpel is.
Als je nog niet veel hebt gewerkt met objecten is datetime de aangewezen om mee te oefenen. Heel simpel. Heel makkelijk.
Ik heb het nu zo opgelost en het werkt:

$start = strtotime("$TsJ-$TsM-$TsD");
$end = strtotime("$TeJ-$TeM-$TeD");
if($start-$end > 0){
$_SESSION['formerror'] = "Paniek";
}

Want dit:
$start = mktime(0,0,0, $TsM,$TsD,$TsJ);
geeft een error als het veld leeg is :)
Martijn Not op 14/12/2010 22:29:38

Ik heb het nu zo opgelost en het werkt:

$start = strtotime("$TsJ-$TsM-$TsD");
$end = strtotime("$TeJ-$TeM-$TeD");
if($start-$end > 0){
$_SESSION['formerror'] = "Paniek";
}

Want dit:
$start = mktime(0,0,0, $TsM,$TsD,$TsJ);
geeft een error als het veld leeg is :)



Je moet altijd controleren of een veld leeg is en de verwachte waarde bevat, aangezien anders strtotime ook niet goed gaat werken en laat staan de vergelijking....

Reageren