Update db na tijd (Opgelost)
rpgnox - 09/06/2010 22:06
PHP 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);
`buildtijdcount1` datetime NOT NULL default '2010-06-09 21:49:54',
`buildtijd1` int(255) NOT NULL default '2010',
`buildupdate1` int(255) NOT NULL default '5',
`buildtijdcount1` datetime NOT NULL default '2010-06-09 21:49:54' ,
`buildtijd1` int( 255 ) NOT NULL default '2010' ,
`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.
$checkupdatebuilding = mysql_query("SELECT * FROM `woningen`");
$readupdate = mysql_fetch_object($checkupdatebuilding);
$buildupdatenumber1 = floor($readupdate->buildupdate1);
$checkupdatebuilding = mysql_query("SELECT *,UNIX_TIMESTAMP(`buildtijdcount1`) AS `buildtijdcount1`,0 FROM `woningen`");
$readupdate = mysql_fetch_object($checkupdatebuilding);
$datijd = $data->buildtijd1;
$tijdverschil1 = $readupdate->buildtijdcount1-3600+$datijd-time();
if($readupdate->buildtijdcount1 + $datijd < time()){
mysql_query("UPDATE `woningen` SET `buildtijdcount1`='0', `buildtijd1`='0', `building".$buildupdatenumber1."`=`building".$buildupdatenumber1."`+'1' WHERE `$readupdate->buildtijdcount1 + $datijd < time())'");}
$checkupdatebuilding = mysql_query ( "SELECT * FROM `woningen`" ) ; $buildupdatenumber1 = floor ( $readupdate -> buildupdate1 ) ;
$checkupdatebuilding = mysql_query ( "SELECT *,UNIX_TIMESTAMP(`buildtijdcount1`) AS `buildtijdcount1`,0 FROM `woningen`" ) ; $datijd = $data -> buildtijd1 ;
$tijdverschil1 = $readupdate -> buildtijdcount1 - 3600 + $datijd - time ( ) ; if ( $readupdate -> buildtijdcount1 + $datijd < time ( ) ) {
mysql_query ( "UPDATE `woningen` SET `buildtijdcount1`='0', `buildtijd1`='0', `building" . $buildupdatenumber1 . "`=`building" . $buildupdatenumber1 . "`+'1' WHERE `$readupdate->buildtijdcount1 + $datijd < time())'" ) ; }
10 antwoorden
Gesponsorde links
vinTage - 09/06/2010 22:28
Nieuw lid
cronjobs lijkt mij hier een gepaste oplossing
rpgnox - 09/06/2010 22:47
PHP interesse
Dit wil ik idd met een cronjob doen. Maar wat moet ik hiervoor dan neerzetten. Want het bovenstaande werkt dus niet.
Nrzonline - 09/06/2010 23:44
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.
rpgnox - 10/06/2010 08:55
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.
larssy1 - 10/06/2010 09:53
MySQL beginner
rpgnox, wil je zo'n soort functie zoals word gebruikt in oGame?
rpgnox - 10/06/2010 10:09 (laatste wijziging 10/06/2010 12:02)
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?)
$checkupdatebuilding1 = mysql_query("SELECT *,UNIX_TIMESTAMP(`buildtijdcount1`) AS `buildtijdcount1`,0 FROM `woningen`");
$readupdate1 = mysql_fetch_object($checkupdatebuilding1);
$checkupdatebuilding2 = mysql_query("SELECT *,UNIX_TIMESTAMP(`buildtijdcount2`) AS `buildtijdcount2`,0 FROM `woningen`");
$readupdate2 = mysql_fetch_object($checkupdatebuilding2);
$checkupdatebuilding3 = mysql_query("SELECT *,UNIX_TIMESTAMP(`buildtijdcount3`) AS `buildtijdcount3`,0 FROM `woningen`");
$readupdate3 = mysql_fetch_object($checkupdatebuilding3);
$buildupdatenumber1 = floor($readupdate1->buildupdate1);
$buildupdatenumber2 = floor($readupdate2->buildupdate2);
$buildupdatenumber3 = floor($readupdate3->buildupdate3);
$datijd1 = $data->buildtijd1;
$tijdverschil1 = $readupdate1->buildtijdcount1-3600+$datijd1-time();
$datijd2 = $data->buildtijd2;
$tijdverschil2 = $readupdate2->buildtijdcount2-3600+$datijd2-time();
$datijd3 = $data->buildtijd3;
$tijdverschil3 = $readupdate3->buildtijdcount3-3600+$datijd3-time();
$timecheck1 = $readupdate1->buildtijdcount1 + $datijd1;
if($readupdate1->buildtijdcount1 + $datijd1 < time()){
mysql_query("UPDATE `woningen` SET `building".$buildupdatenumber1."`=`building".$buildupdatenumber1."`+'1'");}
if($readupdate2->buildtijdcount2 + $datijd2 < time()){
mysql_query("UPDATE `woningen` SET `building".$buildupdatenumber2."`=`building".$buildupdatenumber2."`+'1'");}
if($readupdate3->buildtijdcount3 + $datijd3 < time()){
mysql_query("UPDATE `woningen` SET `building".$buildupdatenumber3."`=`building".$buildupdatenumber3."`+'1'");}
$checkupdatebuilding1 = mysql_query ( "SELECT *,UNIX_TIMESTAMP(`buildtijdcount1`) AS `buildtijdcount1`,0 FROM `woningen`" ) ;
$checkupdatebuilding2 = mysql_query ( "SELECT *,UNIX_TIMESTAMP(`buildtijdcount2`) AS `buildtijdcount2`,0 FROM `woningen`" ) ;
$checkupdatebuilding3 = mysql_query ( "SELECT *,UNIX_TIMESTAMP(`buildtijdcount3`) AS `buildtijdcount3`,0 FROM `woningen`" ) ;
$buildupdatenumber1 = floor ( $readupdate1 -> buildupdate1 ) ; $buildupdatenumber2 = floor ( $readupdate2 -> buildupdate2 ) ; $buildupdatenumber3 = floor ( $readupdate3 -> buildupdate3 ) ;
$datijd1 = $data -> buildtijd1 ;
$tijdverschil1 = $readupdate1 -> buildtijdcount1 - 3600 + $datijd1 - time ( ) ;
$datijd2 = $data -> buildtijd2 ;
$tijdverschil2 = $readupdate2 -> buildtijdcount2 - 3600 + $datijd2 - time ( ) ;
$datijd3 = $data -> buildtijd3 ;
$tijdverschil3 = $readupdate3 -> buildtijdcount3 - 3600 + $datijd3 - time ( ) ;
$timecheck1 = $readupdate1 -> buildtijdcount1 + $datijd1 ;
if ( $readupdate1 -> buildtijdcount1 + $datijd1 < time ( ) ) { mysql_query ( "UPDATE `woningen` SET `building" . $buildupdatenumber1 . "`=`building" . $buildupdatenumber1 . "`+'1'" ) ; }
if ( $readupdate2 -> buildtijdcount2 + $datijd2 < time ( ) ) { mysql_query ( "UPDATE `woningen` SET `building" . $buildupdatenumber2 . "`=`building" . $buildupdatenumber2 . "`+'1'" ) ; }
if ( $readupdate3 -> buildtijdcount3 + $datijd3 < time ( ) ) { mysql_query ( "UPDATE `woningen` SET `building" . $buildupdatenumber3 . "`=`building" . $buildupdatenumber3 . "`+'1'" ) ; }
Martijn - 10/06/2010 12:25
Crew PHP
je doet een beetje lastig
wat je doet, is je zet de eindtijd neer dat het klaar moet zijn.
if($tijdDatHetAfMoetZijn > $tijdNu){
echo"je moet nog".$tijdDatHetAfMoetZijn - $tijdNu." wachten!";
}
else{
echo "kan wel";
}
if ( $tijdDatHetAfMoetZijn > $tijdNu ) {
echo "je moet nog" . $tijdDatHetAfMoetZijn - $tijdNu . " wachten!" ; }
else {
}
geen cronjobs nodig ;)
rpgnox - 10/06/2010 13:17
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?
//Check User ID
$idcheck = $_GET['id'];
$buildings = mysql_query("SELECT * FROM `woningen` WHERE `id`='$idcheck'");
$selectbuilding = mysql_fetch_object($buildings);
//Start Update Checks
$checkupdatebuilding1 = mysql_query("SELECT *,UNIX_TIMESTAMP(`buildtijdcount1`) AS `buildtijdcount1`,0 FROM `woningen` WHERE `id`='$idcheck'");
$readupdate1 = mysql_fetch_object($checkupdatebuilding1);
$checkupdatebuilding2 = mysql_query("SELECT *,UNIX_TIMESTAMP(`buildtijdcount2`) AS `buildtijdcount2`,0 FROM `woningen` WHERE `id`='$idcheck'");
$readupdate2 = mysql_fetch_object($checkupdatebuilding2);
$checkupdatebuilding3 = mysql_query("SELECT *,UNIX_TIMESTAMP(`buildtijdcount3`) AS `buildtijdcount3`,0 FROM `woningen` WHERE `id`='$idcheck'");
$readupdate3 = mysql_fetch_object($checkupdatebuilding3);
$buildupdatenumber1 = floor($readupdate1->buildupdate1);
$buildupdatenumber2 = floor($readupdate2->buildupdate2);
$buildupdatenumber3 = floor($readupdate3->buildupdate3);
$datijd1 = $buildtijd1->buildtijd1;
$tijdverschil1 = $readupdate1->buildtijdcount1-3600+$datijd1-time();
$datijd2 = $buildtijd2->buildtijd2;
$tijdverschil2 = $readupdate2->buildtijdcount2-3600+$datijd2-time();
$datijd3 = $buildtijd3->buildtijd3;
$tijdverschil3 = $readupdate3->buildtijdcount3-3600+$datijd3-time();
if($readupdate1->buildtijdcount1 + $datijd1 > time()){
echo"je moet nog wachten!";
}
else{
mysql_query("UPDATE `woningen` SET `building".$buildupdatenumber1."`=`building".$buildupdatenumber1."`+'1', `buildtijdcount1`='0', `buildtijd1`='0', `buildupdate1`='0' WHERE `id`='$idcheck'");}
//Check User ID
$idcheck = $_GET [ 'id' ] ;
$buildings = mysql_query ( "SELECT * FROM `woningen` WHERE `id`='$idcheck '" ) ;
//Start Update Checks
$checkupdatebuilding1 = mysql_query ( "SELECT *,UNIX_TIMESTAMP(`buildtijdcount1`) AS `buildtijdcount1`,0 FROM `woningen` WHERE `id`='$idcheck '" ) ;
$checkupdatebuilding2 = mysql_query ( "SELECT *,UNIX_TIMESTAMP(`buildtijdcount2`) AS `buildtijdcount2`,0 FROM `woningen` WHERE `id`='$idcheck '" ) ;
$checkupdatebuilding3 = mysql_query ( "SELECT *,UNIX_TIMESTAMP(`buildtijdcount3`) AS `buildtijdcount3`,0 FROM `woningen` WHERE `id`='$idcheck '" ) ;
$buildupdatenumber1 = floor ( $readupdate1 -> buildupdate1 ) ; $buildupdatenumber2 = floor ( $readupdate2 -> buildupdate2 ) ; $buildupdatenumber3 = floor ( $readupdate3 -> buildupdate3 ) ;
$datijd1 = $buildtijd1 -> buildtijd1 ;
$tijdverschil1 = $readupdate1 -> buildtijdcount1 - 3600 + $datijd1 - time ( ) ;
$datijd2 = $buildtijd2 -> buildtijd2 ;
$tijdverschil2 = $readupdate2 -> buildtijdcount2 - 3600 + $datijd2 - time ( ) ;
$datijd3 = $buildtijd3 -> buildtijd3 ;
$tijdverschil3 = $readupdate3 -> buildtijdcount3 - 3600 + $datijd3 - time ( ) ;
if ( $readupdate1 -> buildtijdcount1 + $datijd1 > time ( ) ) { echo "je moet nog wachten!" ; }
else {
mysql_query ( "UPDATE `woningen` SET `building" . $buildupdatenumber1 . "`=`building" . $buildupdatenumber1 . "`+'1', `buildtijdcount1`='0', `buildtijd1`='0', `buildupdate1`='0' WHERE `id`='$idcheck '" ) ; }
Martijn - 10/06/2010 13:47
Crew PHP
doe is
echo $readupdate1->buildtijdcount1." + ".$datijd1." > ".time();
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
rpgnox - 10/06/2010 14:39
PHP interesse
THX!!
Pff, dit heeft wat tijd gekost maar ik ben eruit
$datijd1 = $buildtijd1->buildtijd1;
$datijd1 = $buildtijd1 -> buildtijd1 ;
moest zijn
$datijd1 = $readupdate1->buildtijd1;
$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 .