[PHP en MySQL] Record na een aantal dagen veranderen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • GekkeCoen
  • Registratie: September 2005
  • Laatst online: 20-02 22:53
Hallo iedereen,

Ik ben bezig met een website waar je gratis een startpagina aan kan maken met reclame. Om deze reclame van je startpagina af te halen moeten anderen mensen via jouw speciale link zich aanmelden. Zodra dit gebeurt is wordt de reclame één maand van je site verwijderd.

Dit klinkt simpel maar ik loop toch tegen een aantal problemen op. Standaard staat het veld "reclame" op 1, dit betekent dat er reclame wordt weergegeven. Zodra er iemand zich aanmeld via een speciale link wordt deze veranderd naar 0 (er wordt geen reclame weergegeven). Nu moet ik er nog voor zorgen dat deze automatisch na een maand weer naar 1 wordt geupdate, maar als er bijvoorbeeld 3 mensen via jouw link hebben aangemeld na 3 maanden.

Hoe kan ik dit het beste oplossen? Ik zat er aan te denken om een nieuw veld aan te maken (aantal_dagen) en zodra iemand zich aanmeld hier 31 (dagen = één maand) bij optellen en als er weer iemand zich aanmeld weer 31 en elke dag hier 1 vanaf trekken. Maar een heel groot nadeel is dat het record dan elke dag moet bijgewerkt worden (er moet elke dag 1 vanaf). |:(

Heeft iemand een ander idee? O-)
Coen Keijzer

Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 08:29

krvabo

MATERIALISE!

Timestamp met de tijd dat het veld naar 1 moet worden gezet. Dan hoef je het alleen te updaten als er iemand klikt op de link.

Verder elke dag een cronjob draaien die checkt of de timestamp tussen nu en de volgende dag (run van de cronjob) ligt. Zoja -> update set 1.

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

  • Paul C
  • Registratie: Juni 2002
  • Laatst online: 09-04 12:20
krvabo schreef op vrijdag 27 oktober 2006 @ 22:50:
Timestamp met de tijd dat het veld naar 1 moet worden gezet. Dan hoef je het alleen te updaten als er iemand klikt op de link.

Verder elke dag een cronjob draaien die checkt of de timestamp tussen nu en de volgende dag (run van de cronjob) ligt. Zoja -> update set 1.
Hij moet gewoon dat hele veld met die TRUE voor reclame vergeten en idd een veld maken met een timestamp. Hier zet je de timestamp in tot wanneer er geen reclame weergegeven hoeft te worden. Dus de default waarde kan gewoon waarde <time() zijn, welke dus altijd in het verleden liggen. Op het moment dat een gebruiker nu een maand geen reclame krijgt, dan controleer je even of de timestamp in de toekomst ligt ($timestamp > time()) als dat zo is verhoog je het met een maand seconden en update je de timestamp en als de timestamp niet in de toekomst ligt, dan neem je de huidige tijd en verhoog je die met een maand aan seconden en update je die waarde in het veld.
Om nou nu te bepalen of je script reclame weer moet geven controleer je even of de timestamp in het verleden ligt ($timestamp < time()) en als hij in het verleden ligt geef je reclame weer en anders niets. Opgelost, simpel, correct en geen gehannes met crontabs. :)

edit: je controleert natuurlijk of de datum in de toekomst ligt om ervoor te zorgen dat een gebruiker ook meer dan een maand reclame vrij op kan sparen.

[ Voor 5% gewijzigd door Paul C op 28-10-2006 01:36 ]