login  Naam:   Wachtwoord: 
Registreer je!
 Forum
Zoeken  Regels  Help

Update db na tijd (Opgelost)

Offline rpgnox - 09/06/2010 22:06
Avatar van rpgnoxPHP interesse Wanneer ik in mijn script op de optie bouwen klik dan wordt er een tijd in de db gezet en een bepaald nummer. Jet zoet er dan uit als (vb);

  1. `buildtijdcount1` datetime NOT NULL default '2010-06-09 21:49:54',
  2. `buildtijd1` int(255) NOT NULL default '2010',
  3. `buildupdate1` int(255) NOT NULL default '5',


De bedoeling is dat wanneer de tijd is afgelopen er automatisch een update wordt gemaakt zodat het onderstaande wordt uitgevoerd.

buildtijdcount1 = 0
buildtijd1 = 0

en building_(HIER-HET-NUMMER-VAN-BUILDUPDATE1) in dit geval dus building_5

Ik heb hier nu het volgende voor gemaakt maar dit werkt niet en ik kom er niet uit hoe ik het wel werkende kan krijgen. Hopelijk dat iemand mij hier een goed voorbeeld voor kan geven hoe het wel zou werken.

  1. $checkupdatebuilding = mysql_query("SELECT * FROM `woningen`");
  2. $readupdate = mysql_fetch_object($checkupdatebuilding);
  3. $buildupdatenumber1 = floor($readupdate->buildupdate1);
  4.  
  5.  
  6. $checkupdatebuilding = mysql_query("SELECT *,UNIX_TIMESTAMP(`buildtijdcount1`) AS `buildtijdcount1`,0 FROM `woningen`");
  7. $readupdate = mysql_fetch_object($checkupdatebuilding);
  8. $datijd = $data->buildtijd1;
  9. $tijdverschil1 = $readupdate->buildtijdcount1-3600+$datijd-time();
  10. if($readupdate->buildtijdcount1 + $datijd < time()){
  11.  
  12. mysql_query("UPDATE `woningen` SET `buildtijdcount1`='0', `buildtijd1`='0', `building".$buildupdatenumber1."`=`building".$buildupdatenumber1."`+'1' WHERE `$readupdate->buildtijdcount1 + $datijd < time())'");}

10 antwoorden

Gesponsorde links
Offline vinTage - 09/06/2010 22:28
Avatar van vinTage Nieuw lid cronjobs lijkt mij hier een gepaste oplossing
Offline rpgnox - 09/06/2010 22:47
Avatar van rpgnox PHP interesse Dit wil ik idd met een cronjob doen. Maar wat moet ik hiervoor dan neerzetten. Want het bovenstaande werkt dus niet.
Offline Nrzonline - 09/06/2010 23:44
Avatar van Nrzonline PHP ver gevorderde Cronjobs doe je via je host. Ik weet niet of je eigen server/host hebt of dat je dat je dat afneemt van een bedrijf. In ieder geval stel je de cronjobs in op je server via de admin pannel. Zoek even op google op cronjobs, dat zal je wel wat meer duidelijkheid geven.
Offline rpgnox - 10/06/2010 08:55
Avatar van rpgnox PHP interesse Bedankt, maar ik weet hoe ik een cronjob instel via mijn hosting. Het probleem is dat het script ook moet worden uitgevoerd en juist het script werkt niet ;).

Vandaar de vraag of iemand mij hier enigszins verder mee kan helpen en vertellen wat ik hier fout doe.
Offline larssy1 - 10/06/2010 09:53
Avatar van larssy1 MySQL beginner rpgnox, wil je zo'n soort functie zoals word gebruikt in oGame?
Offline rpgnox - 10/06/2010 10:09 (laatste wijziging 10/06/2010 12:02)
Avatar van rpgnox PHP interesse Heb even gekeken en denk idd dat het zoiets moet zijn ja.

Momenteel heb ik al een deel werkende. Het onderstaande update de database correct wanneer de tijd is afgelopen. Het probleem is nu alleen nog dat alle rows worden geupdate (voor iedere gebruiker) als de tijd in 1 deel is verlopen.

Zou iemand mij kunnen vertellen hoe ik alleen de regel van de gebruiker kan updaten waar de tijd idd is verlopen (dus vertellen wat ik in de WHERE...... dien te zetten?)

  1. $checkupdatebuilding1 = mysql_query("SELECT *,UNIX_TIMESTAMP(`buildtijdcount1`) AS `buildtijdcount1`,0 FROM `woningen`");
  2. $readupdate1 = mysql_fetch_object($checkupdatebuilding1);
  3.  
  4. $checkupdatebuilding2 = mysql_query("SELECT *,UNIX_TIMESTAMP(`buildtijdcount2`) AS `buildtijdcount2`,0 FROM `woningen`");
  5. $readupdate2 = mysql_fetch_object($checkupdatebuilding2);
  6.  
  7. $checkupdatebuilding3 = mysql_query("SELECT *,UNIX_TIMESTAMP(`buildtijdcount3`) AS `buildtijdcount3`,0 FROM `woningen`");
  8. $readupdate3 = mysql_fetch_object($checkupdatebuilding3);
  9.  
  10. $buildupdatenumber1 = floor($readupdate1->buildupdate1);
  11. $buildupdatenumber2 = floor($readupdate2->buildupdate2);
  12. $buildupdatenumber3 = floor($readupdate3->buildupdate3);
  13.  
  14. $datijd1 = $data->buildtijd1;
  15. $tijdverschil1 = $readupdate1->buildtijdcount1-3600+$datijd1-time();
  16.  
  17. $datijd2 = $data->buildtijd2;
  18. $tijdverschil2 = $readupdate2->buildtijdcount2-3600+$datijd2-time();
  19.  
  20. $datijd3 = $data->buildtijd3;
  21. $tijdverschil3 = $readupdate3->buildtijdcount3-3600+$datijd3-time();
  22.  
  23. $timecheck1 = $readupdate1->buildtijdcount1 + $datijd1;
  24.  
  25. if($readupdate1->buildtijdcount1 + $datijd1 < time()){
  26. mysql_query("UPDATE `woningen` SET `building".$buildupdatenumber1."`=`building".$buildupdatenumber1."`+'1'");}
  27.  
  28. if($readupdate2->buildtijdcount2 + $datijd2 < time()){
  29. mysql_query("UPDATE `woningen` SET `building".$buildupdatenumber2."`=`building".$buildupdatenumber2."`+'1'");}
  30.  
  31. if($readupdate3->buildtijdcount3 + $datijd3 < time()){
  32. mysql_query("UPDATE `woningen` SET `building".$buildupdatenumber3."`=`building".$buildupdatenumber3."`+'1'");}
Offline Martijn - 10/06/2010 12:25
Avatar van Martijn Crew PHP je doet een beetje lastig 

wat je doet, is je zet de eindtijd neer dat het klaar moet zijn.

  1. if($tijdDatHetAfMoetZijn > $tijdNu){
  2. echo"je moet nog".$tijdDatHetAfMoetZijn - $tijdNu." wachten!";
  3. }
  4. else{
  5. echo "kan wel";
  6. }


geen cronjobs nodig ;)
Offline rpgnox - 10/06/2010 13:17
Avatar van rpgnox PHP interesse Dank je wel. Ik heb nou dit deel ingevoerd. Maar nu hoeft de speler helemaal niet meer te wachten en wordt alles direct doorgevoerd. Enig idee?

  1. //Check User ID
  2. $idcheck = $_GET['id'];
  3.  
  4. $buildings = mysql_query("SELECT * FROM `woningen` WHERE `id`='$idcheck'");
  5. $selectbuilding = mysql_fetch_object($buildings);
  6.  
  7. //Start Update Checks
  8. $checkupdatebuilding1 = mysql_query("SELECT *,UNIX_TIMESTAMP(`buildtijdcount1`) AS `buildtijdcount1`,0 FROM `woningen` WHERE `id`='$idcheck'");
  9. $readupdate1 = mysql_fetch_object($checkupdatebuilding1);
  10.  
  11. $checkupdatebuilding2 = mysql_query("SELECT *,UNIX_TIMESTAMP(`buildtijdcount2`) AS `buildtijdcount2`,0 FROM `woningen` WHERE `id`='$idcheck'");
  12. $readupdate2 = mysql_fetch_object($checkupdatebuilding2);
  13.  
  14. $checkupdatebuilding3 = mysql_query("SELECT *,UNIX_TIMESTAMP(`buildtijdcount3`) AS `buildtijdcount3`,0 FROM `woningen` WHERE `id`='$idcheck'");
  15. $readupdate3 = mysql_fetch_object($checkupdatebuilding3);
  16.  
  17. $buildupdatenumber1 = floor($readupdate1->buildupdate1);
  18. $buildupdatenumber2 = floor($readupdate2->buildupdate2);
  19. $buildupdatenumber3 = floor($readupdate3->buildupdate3);
  20.  
  21. $datijd1 = $buildtijd1->buildtijd1;
  22. $tijdverschil1 = $readupdate1->buildtijdcount1-3600+$datijd1-time();
  23.  
  24. $datijd2 = $buildtijd2->buildtijd2;
  25. $tijdverschil2 = $readupdate2->buildtijdcount2-3600+$datijd2-time();
  26.  
  27. $datijd3 = $buildtijd3->buildtijd3;
  28. $tijdverschil3 = $readupdate3->buildtijdcount3-3600+$datijd3-time();
  29.  
  30.  
  31. if($readupdate1->buildtijdcount1 + $datijd1 > time()){
  32. echo"je moet nog wachten!";
  33. }
  34. else{
  35. mysql_query("UPDATE `woningen` SET `building".$buildupdatenumber1."`=`building".$buildupdatenumber1."`+'1', `buildtijdcount1`='0', `buildtijd1`='0', `buildupdate1`='0' WHERE `id`='$idcheck'");}
Offline Martijn - 10/06/2010 13:47
Avatar van Martijn Crew PHP doe is

  1. echo $readupdate1->buildtijdcount1." + ".$datijd1." > ".time();


op die manier zie je je voorwaarde, mogelijk zie je dan een foutje, Misschien staat er perongelijk iets op 0 oid
Bedankt door: rpgnox
Offline rpgnox - 10/06/2010 14:39
Avatar van rpgnox PHP interesse THX!!

Pff, dit heeft wat tijd gekost maar ik ben eruit

  1. $datijd1 = $buildtijd1->buildtijd1;


moest zijn

  1. $datijd1 = $readupdate1->buildtijd1;


Doordat er geen tijd bij werd geteld was het verschil altijd 0 (zoals je dus al aangaf ;)

Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2018 Sitemasters.be - Regels - Gehost door: FireMultimedia - Laadtijd: 0.92s