Dit is de situatie:

Een user heeft 300minuten tijd. Die tijd kan hij gebruiken in men spel.

Als de tijd op is vervalt de functie.

Nu is de vraag,
Ik wil dat als er een nieuwe dag aanbreekt (00:00 bij wijze van spreken) en als hij zich aanmeld dat hij wéér 300minten krijgt.

Iemand ideen?
indien meer info nodig vraag maar.
Maak een query waarin je kijkt of men vandaag al een record heeft (dus die 300 minuten). Als dat niet het geval is, insert je een record. Et voila, simple as that ;-).
De 300 mnuten kan in deeltjes opgebruikt worden.
Dus dat is iets complexer.

We hebben een 300 staan in row.
Per keer dat hij een functie in het spel gebruikt gaat er wat tijd af (gekozen door de gebruiker).

Nu zijn er evanthandlers dat al die rows gewoon updaten naar 300 rond een gekozen tijd. Maar ik weet begod niet hoe je een evanthandler maakt.

tabel: (meakelijke versie)
id - username - tijd
1 - TC - 300

Snap je?

Hoe sla jij de tijden op in de database? Het lijkt mij dat je een begin- en eindtijd opslaat (mét datum!), je kunt dan dus het verschil gaan berekenen (zie TIMEDIFF() of AGE() ) . Ook kun je de verschillen per record weer bijelkaar gaan optellen om zo tot een totaal per user te komen. Op basis van deze gegevens kun je dan per dag kijken of iemand z'n 300 minuten al heeft verbruikt. Zelfs een starttijd vóór middernacht en een eindtijd ná middernacht is geen enkel probleem.

Maar alles staat of valt bij het correct opslaan van je begin- en eindtijden.
Sla gewoon telkens het tijdstip op van de laatst uitgevoerde actie. Als een gebruiker opnieuw inlogt / actie uitvoert, controleer je eerst of de laatst uitgevoerde actie niet 'de vorige dag' was.

Als dat wel het geval is, voer je eerst een update query uit om zn credits weer op 300 te zetten en voert daarna pas de actie uit...
Blanche schreef op 22.04.2008 19:07
Sla gewoon telkens het tijdstip op van de laatst uitgevoerde actie. Als een gebruiker opnieuw inlogt / actie uitvoert, controleer je eerst of de laatst uitgevoerde actie niet 'de vorige dag' was.

Als dat wel het geval is, voer je eerst een update query uit om zn credits weer op 300 te zetten en voert daarna pas de actie uit...


Klinkt simpel en begrijpelijk. I like it.
Nu alleen de vraag:
"controleer je eerst of de laatst uitgevoerde actie niet 'de vorige dag' was. "

Dat tijdstip, je mag kiezen hie ik dat opsla, date, timestamp. Maakt niet uit.
Als je me maar weet te vertellen hoe ik het controleer "of de laatst uitgevoerde actie niet 'de vorige dag' was. "

Zie SQL-functies zoals DATE() en CURRENT_DATE. Daarmee kun je prima vergelijkingen opbouwen.
Hoe, geef eens een voorbeeld, in php.
PHP? Het lijkt mij dat je de boel in een database opslaat en dat je dus SQL nodig hebt.

Om de records van piet van vandaag op te vragen:

SELECT
  *
FROM
  tabelnaam
WHERE
  DATE(datumtijdstempel) = CURRENT_DATE
AND
  username = 'piet'
en hoe kijk ik of de dag voorbij is?
Je kijkt niet of de dag voorbij is, je kijkt naar het tijdstip van de laatste actie van een gebruiker. Als die voor een bepaald tijdstip ligt, weet je dus dat zijn laatste actie de vorige dag was...

Reageren