login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Update uitvoeren (cronjobs) (Opgelost)

Offline Multiwebmedi - 20/11/2008 12:55
Avatar van MultiwebmediNieuw lid Beste,

Ik heb een vraag!
Op mijn website kunnen mensen goldmember worden door 1 keer te bellen.
Nadat dit gedaan is wordt in het script deze update uitgevoerd:

  1. UPDATE users SET goldmember = DATE_ADD(NOW(), INTERVAL 3 DAY) WHERE id = '$userid'";


Maar nu wil ik elke dag 150 Credits bij schrijven aan de gene die goldmember is door middel van cronjobs.
Nu is mijn vraag hoe controleer ik nu of deze persoon nog wel vip lid is en vanaf wanneer ?

11 antwoorden

Gesponsorde links
Offline kenzo - 20/11/2008 13:00
Avatar van kenzo PHP beginner als iemand belt krijgt hij de datum van Nu bij goldmember.


Wat staat daar als iemand geen goldmember is?
Offline Multiwebmedi - 20/11/2008 13:01
Avatar van Multiwebmedi Nieuw lid Standaardwaarde: 0000-00-00 00:00:00
Offline kenzo - 20/11/2008 13:03 (laatste wijziging 20/11/2008 13:04)
Avatar van kenzo PHP beginner dan kun je iets doen van:

  1. <?PHP
  2. if($list['goldmember'] !== 0000-00-00 00:00:00) // Als het niet 0000-00 etc. is
  3. {
  4. update set waarde + 150 credits
  5. }
  6. ?>

Anders moet hij niets doen.

Het enige wat ik niet weet is als ik vandaag goldmember wordt, hoelang blijf ik dat dan? (of is dat gewoon voor altijd)?
Offline Multiwebmedi - 20/11/2008 13:05
Avatar van Multiwebmedi Nieuw lid Je blijft voor 3 dagen goldmember.
Offline kenzo - 20/11/2008 13:08 (laatste wijziging 20/11/2008 13:10)
Avatar van kenzo PHP beginner hmm

dan wordt het moeilijker...
dan moet je de datum en tijd van nu vergelijken met die van 3 dagen geleden.

Als die later is dan de status bij goldmember meot je niets doen. Is die kleiner (het verschil tussen 3dagen geleden en nu -> dus hij is nog goldmember), dan moet je er 150 credits bij optellen.


Maar kun je het niet beter anders doen?

status goldmember is de eerste dag 1
de dag erna via cronjob alle 1 naar 2 veranderen.
de derde dag alle 2 naar 3 veranderen.

de vierde dag alle 3 naar 0 veranderen.

Als de status 1, 2 of 3 is moeten er 150 credits bij... anders niet


En via een cronjob kun je iedere dag 1 keer kijken welke status 1 heeft en die veranderen, 2 heeft die veranderen en 3 heeft veranderen.


Dus als iemand belt krijgt hij status 1 (de eerste dag), de dag erna wordt dat een 2 van 2e dag, de dag erna een 3 van derde dag, en de dag daarna een 0 van geen goldmember meer




edit;

Denk ook niet dat dat goed kan...

als ik me om vijf voor 12 snachts aanmeld wordt het 6 minuten later omgezet naar 2e dag...

dat werkt dus ook nog niet perfect!
Offline Multiwebmedi - 20/11/2008 13:12 (laatste wijziging 20/11/2008 13:12)
Avatar van Multiwebmedi Nieuw lid Ja dat had ik net gemaakt, alleen zat ik te denken.
Wat als iemand om 23:00 goldmember wordt & de update wordt elke dag om 00:00 uitgevoerd ?

Dan mist hij zomaar een dag en pik je eigenlijk whehehe...

EDIT: je wat me net voor haha
Offline kenzo - 20/11/2008 13:15
Avatar van kenzo PHP beginner je zou in plaats van dagen met uren kunnen werken...

ieder uur controleren.
Een uur meer of minder maakt ook niet zoveel uit denk ik, maar ik denk dat dat wel veel werk is en ook misschien te onpraktisch...

Weet zo even geen betere manier, maar zal er wel nog even over nadenken  
Offline Martijn - 20/11/2008 13:18
Avatar van Martijn Crew PHP als je nou is de tijd als time() opslaat in je db (dus gewoon int(15) )

en dan
  1. $tijdmin3dagen=time()-60*60*24*3;
  2. $sql= "UPDATE WHERE datum>".$tijdmin3dagen;


cronnetje elk uur en klaar
Offline Multiwebmedi - 20/11/2008 13:44
Avatar van Multiwebmedi Nieuw lid
  1. $query = "UPDATE users SET goldmember = time(), credits = credits + 500, belservice = belservice + 0.85, aantal = aantal + 1 WHERE id = '$userid'";


Op deze update krijg ik een error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '), credits = credits + 500, belservice = belservice + 0.85, aantal = aantal + 1 ' at line 1
Offline Martijn - 20/11/2008 14:43
Avatar van Martijn Crew PHP omdat time op die manier als string word gezien. ".time()." werkt wel (dus met aanhalingstekens en punten)
Offline Multiwebmedi - 20/11/2008 15:03
Avatar van Multiwebmedi Nieuw lid Het is al opgelost, alleen nu wilt me cron weer niet elke min om even te testen... als ik het handmatig doe in de browser werkt het wel maar de cron wil niet hahaha
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.25s