ik wil graag een scriptje die terug telt
dit moet er komen te staan
het duurt nog ... sec voor dat je weer kan klikken
in de db staat een tijd wanneer hij weer mag klikken dus hij moet terug tellen van de tijd nu tot de tijd in de datatbase
(ik hoop dat jullie me snappen)
(ik heb al heel veel geprobeerd maar niks lukte)
alvast bedankt

han
Sla in je db de huidige tijd + wachttijd op,
al ze dan op de pagina komen, lees de db tijd uit, en trek hier de huidige tijd van af, en je hebt de resterende wachttijd over... Om het simpel te houden, werk met seconden sinds Epoch... (date("U");)
oke
maar ik weet niet hoe U werkt?
maar ik zal het ff op zoeken
thnx
tijd voor nu een uur geleden (een uur geleden dus :P)
<?
$nuzonet = now()-1;
echo $nuzonet;
?>
ofzo :)..
Zo van php.net:

<?
$gisteren = mktime(0, 0, 0, date("m") , date("d")-1, date("Y"));
$vorigemaand = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
$vorigjaar = mktime(0, 0, 0, date("m"), date("d"), date("Y")-1);
?>

// Edit: PHP codes vergeten
Zo.. Ik heb deze verzonnen. Deze is een combinatie van PHP en JavaScript en werkt perfect onder Firefox en Internet Explorer.

De basis van mijn script was deze JavaScript.

Het script is hetvolgende:

<html>
<head>
<script LANGUAGE="JavaScript">
<!--
var now = new Date();
var epoch = now.getTime();
var event = new Date("<?php echo date('M j Y H:i:s',time()+10); ?>");
var event_epoch = event.getTime();
var seconds = (event - now) / 1000;
var serverOffset = epoch - <?php echo time()*1000; ?>;
ID=window.setTimeout("update();", 1000);

function update() {
now = new Date();
var now_epoch = now.getTime();
seconds = (event_epoch - now_epoch + serverOffset) / 1000;
seconds = Math.round(seconds);

if (seconds >= 0)
{
document.form1.seconds.value = seconds;
}

if (seconds == 0){
document.form1.button.style.visibility='visible';
}

ID=window.setTimeout("update();",1000);
}
// --></script>
</head>
<body>

<form name="form1">
<p>Je mag weer klikken over <input type="text" name="seconds" value="10" size="4"> seconden.<br>
<input type="submit" name="button" value="klikken" style="visibility: hidden;"></p>
</form>

</body>
</html>

Enige uitleg is misschien wel op zijn plaats:
In de JS maak ik eerst een variabele met de datum (op deze manier geschreven: Nov 2 2004 21:26:42). Deze datum is de datum van de bezoeker zijn computer. JavaScript is immers client-side.
Vervolgens reken ik dezelfde datum om naar het aantal miliseconden sinds epoch (time()*1000 in PHP).

Daarna maak ik een nieuwe variabele die de tijd aangeeft wanneer er weer geklikt mag worden... Deze maak ik in PHP, want hij moet immers uit een DB komen (ik ga ervan uit dat die in de DB ook in seconden sinds epoch staat. Dan kan je time()+10 vervangen door je waarde uit de DB). Deze tijd in PHP echo ik naar m'n JavaScript.
Daarna laat ik deze tijd weer door JavaScript omzetten naar miliseconden sinds epoch.
Vervolgens reken ik het verschil uit en deel dat door 1000 (van ms naar s).

Dan komt het belangrijkte; omdat JS een clientside-taal is en PHP serverside is het bijna uitgesloten dat beide machines een tijd hebben die op de seconde precies loopt. Daarom reken ik het verschil tussen server en client uit: serverOffset.
Dit doe ik door de time()*1000 (in miliseconden) van de eerder uitgerekende variabele epooch af te trekken.
De waarde die daarin ontstaat is het tijdsverschil tussen client en server in ms.

Nu wordt het updaten van het veld in het formulier opgestart. Daarvoor is de functie update().
In die functie wordt elke 1000ms (dan wordt die functie nl. uitgevoerd) een variabele met de tijd en vervolgens een variabele met de epoch in ms aangemaakt.

Vervolgens wordt het aantal seconden dat er nog over is uitgerekend door de epoch (in ms) van het moment dat we weer mogen klikken af te trekken van de epoch (in ms) van nu. Daarbij wordt het verschil in tijd (in ms) tussen client en server gedaan. En dan wordt het zooitje gedeeld door 1000 om weer seconden te krijgen. Deze worden afgerond.

Vervolgens zijn er twee vergelijkingen om het formulierveld up te daten en om de knop te laten zien als we mogen klikken.

Elwin

[Edit: Duidelijk dat het code-blok nog niet goed is :D]

Reageren