Hoi,

Ik heb deze code:

$dat1 = date('j-m-Y', strtotime($_POST['datum_afspraak']));
$dat2 = date('j-m-Y', strtotime($datum));

$dat3 = ($dat1 - $dat2);

if (!empty($_POST['datum_afspraak']) && ($dat3 >= 0)) {
$datum_afspraak = $_POST['datum_afspraak'];
$_SESSION['datum_afspraak'] = $_POST['datum_afspraak'];

Dit zou moeten bepalen of de afspraak na vandaag is gemaakt. Maar als ik de datum voor november kies, dan accepteert hij hem niet. Binnen dezelfde maand gaat het goed maar nu het morgen 1 november is, pakt hij niets.
Ik neem aan dat het hem zit in het aftrekken van elkaar maar dat zou toch niet mis mogen gaan lijkt mij... in de db staat ie gewoon als DATE en wat in het formulier wordt gestuurd is: 01-11-2014
hummmm, Hoe zou het dan moeten?
Want wat gestuurd wordt vanuit het formulier is dan natuurlijk geen datum...

if ($vergelijk_datum_nu->format('d-m-Y') >= $vergelijk_datum_next->format('d-m-Y') && $vergelijk_datum_nu->format('H:i:s') > $vergelijk_datum_2->format('H:i:s'))
            {    echo "bgcolor=#BF1919"; // rood
            }


wordt:


if ($vergelijk_datum_nu >= $vergelijk_datum_next 
      && $vergelijk_datum_nu > $vergelijk_datum_2)
            {    echo "bgcolor=#BF1919"; // rood
            }


[size=xsmall]Toevoeging op 24/11/2014 12:14:34:[/size]

en dat is dan los van het gejongleer in de eerst 6 regels van je script:

met strtotime() naar een timestamp, vervolgens met date() daar een formaat op gooien en dat weer voeren aan DateTime().

sowieso snapt DateTime met een '@' erbij wat een unix-timestamp is,
maar ook zou new DateTime($row_afdtba['datum_vervolg']) al moeten werken.

--
daarnaast zou ik datum en tijd bij elkaar houden om allerlei dubbele vergelijkingen "is het de datum en is het later dan 11 uur" te kunnen voorkomen.
Ik snap echt helemaal niets van die date dingen... ben er al jaren mee aan het stoeien en ik krijg het nooit voor elkaar...

Als ik die format weghaal, dan draait het probleem helemaal om... en dan worden de dagen die in de toekomst liggen helemaal niet meer rood maar blijven wit...
wanneer moet er welke kleur komen?
je voert datum en tijd in wanneer de afspraak is.
Op het moment dat je de lijst opent moet hij dus kijken wanneer de tijdsblokken zijn.

Dus nu is het moment dat je kijkt.

groen, indien toekomst
oranje als het tijdsblok nu is
rood als het tijdsblok in het verleden ligt

ingevoerd wordt:
datum: 13-11-2014
tijd: 13:45 - 14:00

waarbij de tijd in 4 pulldown menutjes wordt opgebouwd. Uren en per kwartier
<?php
$begin = $_POST['datum'] .' '. $_POST['tijd1'];
$eind= $_POST['datum'] .' '. $_POST['tijd2'];

$dtBegin = DateTime::createFromFormat('d-m-Y H:i', $begin);
$dtEind = DateTime::createFromFormat('d-m-Y H:i', $eind);
$dtNu = new DateTime();

if($dtBegin > $dtNu) {
// toekomst
}
elseif($dtEind < $dtNu) {
// verleden
}
else {
// tussenin
}

?>

aangenomen dat tijd1 < tijd2
wtf? zo simpel kan het zijn? :'(
Ik ga het ff testen... if so... two tumbs up!

[size=xsmall]Toevoeging op 25/11/2014 10:55:06:[/size]

WOW!! Thnx Ivo, het werkt!!!
Kheb hem wel een klein beetje moeten aanpassen... dit is het geworden:


<?php

            $begin = $row_afdtba['datum_vervolg'] .' '. $row_afdtba['tijd_vervolg_1'];
            $eind = $row_afdtba['datum_vervolg'] .' '. $row_afdtba['tijd_vervolg_2'];

            $dtBegin =  DateTime::createFromFormat('Y-m-d H:i:s', $begin);
            $dtEind =  DateTime::createFromFormat('Y-m-d H:i:s', $eind);
            $dtNu = new DateTime();

            if($dtBegin > $dtNu) {
            // toekomst
            echo "bgcolor=#8DE28D";
            }
            elseif($dtEind < $dtNu) {
            // verleden
            echo "bgcolor=#BF1919";
            }
            else {
            // tussenin
            echo "bgcolor=#DB704D";
            }

?>


Zoals beloofd... bij deze: Two Tumbs Up!
Bedankt voor het meedenken en zelfs herschrijven van het script!

Reageren