Start date kleiner dan End date
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:
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
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
Ha Martijn,
Dit zou moeten werken.
Dit zou moeten werken.
Het moet zijn:
(je kan dus in dit geval beter met een Unix timestamp werken om te vergelijken)
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.
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).
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.
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 :)
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 -
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.
Leuk al die posts.
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.
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.
Officieel of niet, hij is niet overzichtelijk en geeft niet direct de informatie die ik zoek. Er staat een lijst met links waar ik en waarschijnlijk 80% van de mensen niet naar op zoek is waarin ik 1 ding moet zoeken.
w3schools daarentegen vind ik een veel betere site. Maar het zal wel aan mij liggen.
w3schools daarentegen vind ik een veel betere site. Maar het zal wel aan mij liggen.
Dat is een functie om te kijken of de opgegeven Date wel echt volgens de greg. kalender is. Daarmee kan de TS inderdaad al een grote stap zetten richting z`n script, maar is nog niet het antwoord.
@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.
@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.
Checkdate gaat niet werken. Op dat phpnet staat:
The year is between 1 and 32767 inclusive.
Bij mij gaat hij maar van 1970 to 1038 ofzo.
The year is between 1 and 32767 inclusive.
Bij mij gaat hij maar van 1970 to 1038 ofzo.




