Start date kleiner dan End date
Code (php)
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
Dit zou moeten werken.
Code (php)
(je kan dus in dit geval beter met een Unix timestamp werken om te vergelijken)
Gewijzigd op 14/12/2010 21:59:53 door Arjan -
Karl Karl op 14/12/2010 22:01:13:
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:
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).
Karl Karl op 14/12/2010 22:01:13:
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).
Toen je ging fietsen was je er ook niet klaar voor (want je kon niet fietsen).
Door het te doen leer je het.
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).
Gewijzigd op 14/12/2010 22:08:09 door Arjan -
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).
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.
$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 :)
$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....
Gewijzigd op 14/12/2010 22:34:16 door Arjan -
Maar $start = date("m-d-Y",mktime(0,0,0, $TsM,$TsD,$TsJ)); is never ever een datum maar het is een stukje tekst. Een datum die je wilt vergelijken met een andere datum is ALTIJD in het standaard format. YYYY-MM-DD en nooit anders.
Gewijzigd op 15/12/2010 04:40:24 door - SanThe -
F Loogman op 14/12/2010 23:17:36:
Let op dat dit soms niet werkt voor data vóór 1970, afhankelijk van je PHP versie en Operating System. Zie ook http://php.net/manual/en/function.strtotime.php.
Ja hoe kan ik checken of een date valid is? Als ik 33-23-3010 invullen maakt hij er 01-01-1970 van, maar hoe kan ik een error returnen als hij inderdaad niet klopt.. :/
Martijn Not op 15/12/2010 18:01:57:
Ja hoe kan ik checken of een date valid is? Als ik 33-23-3010 invullen maakt hij er 01-01-1970 van, maar hoe kan ik een error returnen als hij inderdaad niet klopt.. :/
F Loogman op 14/12/2010 23:17:36:
Let op dat dit soms niet werkt voor data vóór 1970, afhankelijk van je PHP versie en Operating System. Zie ook http://php.net/manual/en/function.strtotime.php.
Ja hoe kan ik checken of een date valid is? Als ik 33-23-3010 invullen maakt hij er 01-01-1970 van, maar hoe kan ik een error returnen als hij inderdaad niet klopt.. :/
Waarom wil je niet mijn oplossing gebruiken?
Omdat het niet echt een oplossing is.. het is een link naar een website waar ik niets wijzer uit wordt. Bovendien is het probleem soort van opgelost en wil ik nu gewoon een validatie hebben voor de datum. Als dat datetime dat kan doen, wil ik dat best gebruiken maar php.net vind ik een rot site.
Martijn Not op 15/12/2010 19:33:12:
Omdat het niet echt een oplossing is.. het is een link naar een website waar ik niets wijzer uit wordt. Bovendien is het probleem soort van opgelost en wil ik nu gewoon een validatie hebben voor de datum. Als dat datetime dat kan doen, wil ik dat best gebruiken maar php.net vind ik een rot site.
Als jij php.net een rot site vind. Dan moet je geen php doen. Php.net is de officiële documentatie van php. Hier staat alles op wat je moet weten.
Overigs wil ik je een compliment geven, jij bent de eerste die dit opmerkt op deze manier.
w3schools daarentegen vind ik een veel betere site. Maar het zal wel aan mij liggen.
@Martijn, dat ligt inderdaad aan jou. PHP.net heeft erg veel documentatie. Je moet ook niet vergeten dat het niet een OO taal is zoals c# waar alles gecategoriseerd aan de hand van classes. Het is function-based programming, dus dan krijg je een compleet overzicht van alle functies gerelateerd aan jou zoekopdracht. Die lijsten ga je wel handig vinden wanneer je eenmaal op zoek bent naar specifieke data.
The year is between 1 and 32767 inclusive.
Bij mij gaat hij maar van 1970 to 1038 ofzo.