Hey,

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:

http://www.plaatscode.be/4559/

Dit werkt in begin wel maar na een tijdje ( paar uur ) komt er te staan nog 22 uur aan het trainen of zoiets. Kan iemand me helpen dit op te lossen ?

Paul
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
Voor de oplossing kun je gebruik gaan maken van het verschil kwa datum. Bijv:
If ($datum1 != $datum2)
{andere tijdsbereking toepassen}
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?
Nope, heb je 't al geprobeerd?
Scrptr schreef op 10.03.2007 20:13
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.

Reageren