Start date kleiner dan End date

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Martijn Not

Martijn Not

14/12/2010 21:26:01
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?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
 
PHP hulp

PHP hulp

25/12/2024 15:04:58
 
Jonathan de Vries

Jonathan de Vries

14/12/2010 21:57:30
Quote Anchor link
Ha Martijn,

Dit zou moeten werken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?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 />";
   }

?>
 
Arjan -

Arjan -

14/12/2010 21:58:12
Quote Anchor link
Het moet zijn:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?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)
Gewijzigd op 14/12/2010 21:59:53 door Arjan -
 

14/12/2010 22:01:13
Quote Anchor link
Ga niet zelf klooien. Gebruik php.

datetime.
 
Arjan -

Arjan -

14/12/2010 22:02:18
Quote Anchor link
Karl Karl op 14/12/2010 22:01:13:
Ga niet zelf klooien. Gebruik php.

datetime.


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).
 

14/12/2010 22:05:26
Quote Anchor link
Arjen - op 14/12/2010 22:02:18:
Karl Karl op 14/12/2010 22:01:13:
Ga niet zelf klooien. Gebruik php.

datetime.


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.
 
Arjan -

Arjan -

14/12/2010 22:07:33
Quote Anchor link
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).
Gewijzigd op 14/12/2010 22:08:09 door Arjan -
 

14/12/2010 22:12:01
Quote Anchor link
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.
 
Martijn Not

Martijn Not

14/12/2010 22:29:38
Quote Anchor link
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 :)
 
Arjan -

Arjan -

14/12/2010 22:33:51
Quote Anchor link
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....
Gewijzigd op 14/12/2010 22:34:16 door Arjan -
 
F Loogman

F Loogman

14/12/2010 23:17:36
Quote Anchor link
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.
 
- SanThe -

- SanThe -

15/12/2010 04:27:45
Quote Anchor link
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.
Gewijzigd op 15/12/2010 04:40:24 door - SanThe -
 
Martijn Not

Martijn Not

15/12/2010 18:01:57
Quote Anchor link
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.. :/
 

15/12/2010 18:05:22
Quote Anchor link
Martijn Not op 15/12/2010 18:01:57:
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?
 
Martijn Not

Martijn Not

15/12/2010 19:33:12
Quote Anchor link
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.
 

15/12/2010 20:17:36
Quote Anchor link
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.
Gewijzigd op 15/12/2010 20:18:04 door
 
Martijn Not

Martijn Not

15/12/2010 20:28:39
Quote Anchor link
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.
 
- SanThe -

- SanThe -

15/12/2010 20:45:14
 
Pieter Jansen

Pieter Jansen

15/12/2010 20:53:13
Quote Anchor link
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 Not

Martijn Not

16/12/2010 20:39:05
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.