login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Tijd automatisch laten aftellen en reset

Offline micasa001 - 13/11/2009 09:16
Avatar van micasa001PHP interesse Ik heb een script met de volgende optie: de speler bezoekt de pagina, vervolgens wordt de COPHEATTOTAAL op een getal gezet en de COPHEATTIJD krijgt een totaal tijd toegewezen. Tevens wordt er van de COPHEAT 1 afgehaald.

Tot dusver werkt alles zonder problemen, maar nu moet de COPHEATTIJD en de COPHEATTOTAAL na 5 minuten (dit is dus de 300,300 in het script) weer op 0 komen te staan.

Hoe moet ik dit doen?

  1. <?
  2. if($data->copheat > 1 and $data->copheattotaal == 0) {
  3. $tijd = rand(300,300);
  4. mysql_query("UPDATE `users` SET `copheat`=`copheat`-'1' WHERE `login`='$data->login'");
  5. mysql_query("UPDATE `users` SET `copheattotaal`='" . $tijd . "',`copheattijd`=NOW() WHERE `login`='" . $data->login . "'");
  6. }
  7.  
  8.  
  9. $dbres = mysql_query("SELECT *,UNIX_TIMESTAMP(`tijd`) AS `copheattijd`,0 FROM `users` WHERE `login`='" . $data->login . "'");
  10. $fetch = mysql_fetch_assoc($dbres);
  11. $verschil = $fetch['copheattijd'] - 3600 + $data->copheattotaal - time();
  12. if($fetch['copheattijd'] + $data->copheattotaal > time()){
  13. header("Location: $sitelink/jail.php");
  14.  
  15.  
  16.  
  17.  
  18. ?>
  19.  
  20. <?php } else { ?>
  21. <?php } ?>

10 antwoorden

Gesponsorde links
Offline jaronneke - 13/11/2009 09:18
Avatar van jaronneke MySQL interesse na 5 minuten (dit is dus de 300,300 in het script) .

Dat is echt bullshit

http://nl2.php.net/rand
Offline micasa001 - 13/11/2009 09:24
Avatar van micasa001 PHP interesse Dan 5,5 (als dat wel goed is). Maar dit is niet het punt. Het gaat erom dat de tijd automatisch minder dient te worden.

Hoe kan ik dit doen?
Offline ArieMedia - 13/11/2009 09:24 (laatste wijziging 13/11/2009 09:27)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
jaronneke schreef:
na 5 minuten (dit is dus de 300,300 in het script) .

Dat is echt bullshit

http://nl2.php.net/rand
het is geen bullshit dat het 5 minuten zijn, want hij geeft altijd 5 minuten terug . Maar het is onoverbodig functiegebruik .

@TS.

Zoals je het nu maakt is een beeeeetje fout...
Je kan beter de tijd opslaan wanneer hij weer vrij is 

  1. $iHeatOver = time() + 300;
  2. $sql = 'blablabla....'; // opslaan dus!
  3.  
  4. $sql = 'ophalen tijd..'; // dus ophalen wanneer hij weer vrij is..
  5. if($data->tijdvrij < time()) {
  6. echo 'Je mag lekker boefje spelen';
  7. } else {
  8. $iSec = $data->tijdvrij - time();
  9. echo 'Je zit nog lekker op je nagels te bijten voor '.$iSec.' seconden';
  10. }
Offline micasa001 - 13/11/2009 09:33
Avatar van micasa001 PHP interesse Ok, ik heb het nu veranderd naar:

<?

if($data->copheat > 1 and $data->copheattotaal == 0) {
$tijd = time() + 300;
mysql_query("UPDATE `users` SET `copheat`=`copheat`-'1' WHERE `login`='$data->login'");
mysql_query("UPDATE `users` SET `copheattotaal`='" . $tijd . "',`copheattijd`=NOW() WHERE `login`='" . $data->login . "'");
}


?>

<?php } else { ?>
<?php } ?>

Als de COPHEATTOTAAL op 0 staat wordt er nu een totaal van 1258101446 in de database geplaatst. Maar deze tijd blijft continu hetzelfde.

Hoe kan ik deze automatisch laten terug tellen naar 0 (ook als ik niet op de website actief bezig ben?)

Alvast bedankt,
Offline ArieMedia - 13/11/2009 09:39 (laatste wijziging 13/11/2009 09:41)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
micasa001 schreef:
Ok, ik heb het nu veranderd naar:

*knipperdeknip*

Als de COPHEATTOTAAL op 0 staat wordt er nu een totaal van 1258101446 in de database geplaatst. Maar deze tijd blijft continu hetzelfde.

Hoe kan ik deze automatisch laten terug tellen naar 0 (ook als ik niet op de website actief bezig ben?)

Alvast bedankt,
Waarom zou je die constant terug laten tellen? en ook als je niet actief bent? Je hebt het alleen nodig op het moment wanneer een gebruiker kijkt, dus haal je dan de tijd op. die tijd blijft inderdaad hetzelfde totdat hij opnieuw vast komt te zitten. want dan update je de tijd weer.

Dus: De tijd in de tabel is de tijd wanneer hij weer vrij is (dit is nu + 300 seconden op het moment dat je opslaat..), deze haal je op en controleer je met hoe laat het nu is. Die tijd moet dus niet veranderen.

Bekijk deze uitleg en mijn eerder gegeven uitleg + scriptje goed, lees het nog een keer over en ik weet zeker dat je het snapt  

Edit: Typo + Code-tags please 
Offline micasa001 - 13/11/2009 09:42
Avatar van micasa001 PHP interesse De reden dat ik deze constant terug wil laten tellen is omdat dit deel

mysql_query("UPDATE `users` SET `copheat`=`copheat`-'1' WHERE `login`='$data->login'");

iedere 5 minuten moet worden geladen. Ik weet dat dit met een cron instelling is te doen, maar ik kan maar 1x per 15 minuten een cron draaien en het script moet echt iedere 5 minuten werken.

Hoe kan ik dit anders voor elkaar krijgen?
Offline ArieMedia - 13/11/2009 09:46 (laatste wijziging 13/11/2009 09:52)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
micasa001 schreef:
De reden dat ik deze constant terug wil laten tellen is omdat dit deel

mysql_query("UPDATE `users` SET `copheat`=`copheat`-'1' WHERE `login`='$data->login'");

iedere 5 minuten moet worden geladen. Ik weet dat dit met een cron instelling is te doen, maar ik kan maar 1x per 15 minuten een cron draaien en het script moet echt iedere 5 minuten werken.

Hoe kan ik dit anders voor elkaar krijgen?


  1. $iHeatOver = time() + 300;
  2. $sql = 'blablabla....'; // opslaan dus!
  3.  
  4. $sql = 'ophalen tijd..'; // dus ophalen wanneer hij weer vrij is..
  5. if($data->tijdvrij < time()) {
  6. $sql = 'UPDATE boefje...... copheat = 0';
  7. header('Location: spelen.php');
  8. } else {
  9. $iSec = $data->tijdvrij - time();
  10. echo 'Je zit nog lekker op je nagels te bijten voor '.$iSec.' seconden';
  11. }


en lees dit even door over crons PFZ. Je staat namelijk op het punt om misbruikt te gaan maken van crons

Edit2: Je moet dit script helemaal niet om de 5 minuten draaien. Je moet dit script draaien wanneer een gebruiker klikt.
Offline Richard - 13/11/2009 10:11
Avatar van Richard Crew algemeen En zie vooral dan de wiki:

http://wiki.phpfreakz.nl/Cron
http://wiki.phpfreakz.nl/Grondstoffen

En dan vooral het tweede artikel.
Offline ArieMedia - 13/11/2009 10:14
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Richard schreef:
En zie vooral dan de wiki:

http://wiki.phpfreakz.nl/Cron
http://wiki.phpfreakz.nl/Grondstoffen

En dan vooral het tweede artikel.
Ah, ik kon het niet meer vinden in de wiki voorpagina, maar die zocht ik inderdaad ook :-)
Offline micasa001 - 13/11/2009 10:16
Avatar van micasa001 PHP interesse Dank je wel. Het 2e deel kan ik zeker goed gebruiken voor een anders script.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.292s