Ik heb wat problemen met het wachtsysteem van mijn game. Het zit namelijk zo, als je gaat trainen o.i.d. wordt de tijd opgeslagen in de database. Bv. als je gaat trainen op 10-03-2007 08:00:22 dan komt 10-03-2007 08:30:22 in de database te staan. Om te controleren of je nog aan het trainen bent gebruik ik de volgende code:
Ik zou me kunnen voorstellen dat als je begint met trainen om 23:55 dat het dan fout gaat. Je hoort dan klaar te zijn om 00:25. En jij rekent het dan als volgt om: $temp = $tijd1-$tijd2; in dit geval dus: 23:55-00:25=23 uur en 30 minuten, daar zal de fout dus in zitten
Nee, laat het rekenen met tijden gewoon aan de database over!
SELECT
TIMEDIFF(NOW(), krachttijd) AS remaining
FROM
users
Om bijvoorbeeld de tijd te bepalen dat er nog getraind wordt.
Hoe je sql query er precies uit komt te zien hangt er maar net vanaf wat jij precies wilt. Maar neem in ieder geval eens een kijkje in hoofdstuk 12.5 van de mysql handleiding, de datum/tijd functies.
daar heb je gelijk in. Maar zorgt hij dan niet weer voor het zelfde probleem?
Nee, dat is juist de grote kracht van de database. Zolang jij je gegevens in de juiste type velden opslaat (in dit geval dus DATETIME), zal het goed gaan...
Rekenen met data en tijden moet je derhalve dus ook altijd aan de database overlaten.