login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Actie per dag

Offline Waflix - 07/09/2011 18:03
Avatar van WaflixLid Ik zoek al een tijdje, zonder resultaat, naar code die ervoor zorgt dat de gebruiker slechts 1 keer per dag een bepaalde actie kan uitvoeren.
In mijn geval gaat het om het opvragen van informatie uit de database. Dit mag slechts 1 keer per dag worden gedaan, en er wordt gebruik gemaakt van een table voor de ingelogde gebruiker. Misschien dat je daar nog ietes mee kan.

5 antwoorden

Gesponsorde links
Offline Skatelow - 07/09/2011 18:15
Avatar van Skatelow Lid Ik denk dat dit werkt als je gebruik maakt van Cronjobs.
Ik heb echter zeer weinig ervaring hiermee, dus ik kan je niet echt helpen 
Offline Dlol - 07/09/2011 18:17 (laatste wijziging 07/09/2011 18:24)
Avatar van Dlol Lid Wanneer de gebruiker de actie uitvoert een timestampt opslaan in de database. Telkens wanneer de gebruiker opnieuw de actie wil uitvoeren moet er dus eerst gekeken worden of de laatste actie wel 24 * 60 * 60 seconden geleden is gebeurd (als je met dag 24 uur bedoelt).
Anders ga je eerst de timestamp naar beneden moeten afronden naar het begin van de dag (wat kan gedaan worden via $timestamp = $timestamp - ($timestamp % (60*60*24)) denk ik). Dan kan je makkelijk gewoon een kleiner dan toepassen om het te weten te komen.

Edit: @Skatelow, cronjobs zijn echt voor niets nodig hier, totaal naast de kwestie.
Offline Skatelow - 07/09/2011 19:11
Avatar van Skatelow Lid ik dacht dat cronjobs wel degelijk kon toegepast worden,
zoniet, excuses
Offline Dlol - 07/09/2011 19:42
Avatar van Dlol Lid Cronjobs zijn taken die op bepaalde tijdstippen worden uitgevoerd, los van enige userinput. Een voorbeeld zou kunnen zijn het uitbetalen van lonen, het laten spelen van voetbalmatchen in een Online Soccer Manager etc. (hoewel dit in principe ook makkelijk zonder cronjob kan).
Bij het probleem van Waflix moet enkel gekeken worden of de gebruiker vandaag niet reeds de actie heeft gedaan. Dit is dus wél afhankelijk van user input, de gebruiker wil de actie immers doen.
Offline marten - 07/09/2011 20:43
Avatar van marten Beheerder Je logt de tijd dat de gebruiker de actie heeft opgevraagd. Deze zet je bv in een database tabel. Vervolgens controleer je bij het uitvoeren van de actie of het langer is dan x periode geleden.

  1. SELECT * FROM acties WHERE DATEDIFF(NOW(), `kolomMetLaatsteActieDatum`) > 1;
  2. // Langer dan een dag geleden


Bekijk ook eens mijn datum en tijd functies in MySQL voor bijvoorbeeld het verschil in uren, minuten etc.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.195s