Script werkt niet bij meerder malen laden
Ik heb een timer gemaakt en deze in een apart bestandje timer.php gezet. Dit bestandje wordt aangeroepen door index.php. In index.php wordt $missie 1 t/m 8 benoemd. Nu wordt de timer afhankelijk van een tijdstip wel of niet weergeven. Dit kan dus bij meerdere $missie. Maar dit is het probleem: dat doet hij niet. Als er maar 1 weergeven moet worden werkt hij, maar als er 2 weergeven moeten worden doet hij het niet kan iemand mij hier mee helpen? Het moet voor een opdracht namelijk vanavond klaar zijn.
Even voor de informatie: doquery is gewoon een functie voor het connecten met de DB (deze werkt) en deze wordt aangegeven in index.php waarin timer.php wordt geincluded.
timer.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
$tijd = time();
$eindtijd = doquery("SELECT `$missie` FROM profiel WHERE id='$id'")+doquery("SELECT `wachttijd` FROM missies WHERE missienr='$missie'"); //tijd op het moment dat je op de knop hebt gedrukt + het aantal seconde dat je moet wachten
$tijdverschil = $eindtijd - $tijd;
if($tijdverschil > 0){
?>
<script type="text/javascript">
var begin_seconden = <? echo $tijdverschil ?>;
var aantal_seconden = 0;
function afteller() {
aantal_seconden++;
if (aantal_seconden!=begin_seconden) {
var aantal_seconden_nog = begin_seconden-aantal_seconden;
var minuut = Math.floor(aantal_seconden_nog/60);
var seconden = Math.floor(aantal_seconden_nog-(60*minuut));
var dubbele_punt = ':';
if (minuut<=9) {
minuut = '0'+minuut;
}
if (seconden<=9) {
seconden = '0'+seconden;
}
document.tijd.tijd_input.value = minuut+dubbele_punt+seconden;
}
else {
window.top.location.href = 'test.php';
}
}
window.setInterval('afteller();',1000);
</script>
<form name="tijd"><input type="text" name="tijd_input"></form>
<?php
}
?>
$tijd = time();
$eindtijd = doquery("SELECT `$missie` FROM profiel WHERE id='$id'")+doquery("SELECT `wachttijd` FROM missies WHERE missienr='$missie'"); //tijd op het moment dat je op de knop hebt gedrukt + het aantal seconde dat je moet wachten
$tijdverschil = $eindtijd - $tijd;
if($tijdverschil > 0){
?>
<script type="text/javascript">
var begin_seconden = <? echo $tijdverschil ?>;
var aantal_seconden = 0;
function afteller() {
aantal_seconden++;
if (aantal_seconden!=begin_seconden) {
var aantal_seconden_nog = begin_seconden-aantal_seconden;
var minuut = Math.floor(aantal_seconden_nog/60);
var seconden = Math.floor(aantal_seconden_nog-(60*minuut));
var dubbele_punt = ':';
if (minuut<=9) {
minuut = '0'+minuut;
}
if (seconden<=9) {
seconden = '0'+seconden;
}
document.tijd.tijd_input.value = minuut+dubbele_punt+seconden;
}
else {
window.top.location.href = 'test.php';
}
}
window.setInterval('afteller();',1000);
</script>
<form name="tijd"><input type="text" name="tijd_input"></form>
<?php
}
?>
Toevoeging op 13/06/2012 19:03:39:
Niemand een oplossing? Ik heb dit voor vanavond ndig...
Wat krijg je uit de database? Probeer eens $tijdverschil, $tijd en $eindtijd te echo'en en kijken of de waardes zijn zoals verwacht.
Ja alles komt door ik zei in mijn post al dat als hij 1x aangeroepen wordt werkt alleen bij meer dan 1x niet dus alles uit de database komt goed door daar ligt het niet aan
Je moet elke <input> een unieke naam geven en voor elke input moet de functionnaam ook uniek zijn.
sorry maar het input gedeelte begrijp ik wel maar daarna niet meer... zou je een stukje uit mn script kunnen pakken om het te verduidelijken?
function afteller() {
<input type="text" name="tijd_input1">
function afteller1() {
<input type="text" name="tijd_input2">
function afteller2() {
var begin_seconden = ;
var aantal_seconden = 0;
elke keer boven afteller{ zetten want nu werkt hij niet
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<form name="tijd">
<?php
for($i=1;$i<=2;$i++)
{
$tijd = time();
//$eindtijd = doquery("SELECT `$missie` FROM profiel WHERE id='$id'")+doquery("SELECT `wachttijd` FROM missies WHERE missienr='$missie'"); //tijd op het moment dat je op de knop hebt gedrukt + het aantal seconde dat je moet wachten
$eindtijd = time() + rand(50,150);
$tijdverschil = $eindtijd - $tijd;
if($tijdverschil > 0){
?>
<script type="text/javascript">
var begin_seconden<?php echo $i; ?> = <? echo $tijdverschil ?>;
var aantal_seconden<?php echo $i; ?> = 0;
function afteller<?php echo $i; ?>() {
aantal_seconden<?php echo $i; ?>++;
if (aantal_seconden<?php echo $i; ?>!=begin_seconden<?php echo $i; ?>) {
var aantal_seconden_nog<?php echo $i; ?> = begin_seconden<?php echo $i; ?>-aantal_seconden<?php echo $i; ?>;
var minuut = Math.floor(aantal_seconden_nog<?php echo $i; ?>/60);
var seconden = Math.floor(aantal_seconden_nog<?php echo $i; ?>-(60*minuut));
var dubbele_punt = ':';
if (minuut<=9) {
minuut = '0'+minuut;
}
if (seconden<=9) {
seconden = '0'+seconden;
}
document.tijd.tijd_input<?php echo $i; ?>.value = minuut+dubbele_punt+seconden;
}
else {
window.top.location.href = 'test.php';
}
}
window.setInterval('afteller<?php echo $i; ?>();',1000);
</script>
<input type="text" name="tijd_input<?php echo $i; ?>"><br/>
<?php
}
}
?>
</form>
<?php
for($i=1;$i<=2;$i++)
{
$tijd = time();
//$eindtijd = doquery("SELECT `$missie` FROM profiel WHERE id='$id'")+doquery("SELECT `wachttijd` FROM missies WHERE missienr='$missie'"); //tijd op het moment dat je op de knop hebt gedrukt + het aantal seconde dat je moet wachten
$eindtijd = time() + rand(50,150);
$tijdverschil = $eindtijd - $tijd;
if($tijdverschil > 0){
?>
<script type="text/javascript">
var begin_seconden<?php echo $i; ?> = <? echo $tijdverschil ?>;
var aantal_seconden<?php echo $i; ?> = 0;
function afteller<?php echo $i; ?>() {
aantal_seconden<?php echo $i; ?>++;
if (aantal_seconden<?php echo $i; ?>!=begin_seconden<?php echo $i; ?>) {
var aantal_seconden_nog<?php echo $i; ?> = begin_seconden<?php echo $i; ?>-aantal_seconden<?php echo $i; ?>;
var minuut = Math.floor(aantal_seconden_nog<?php echo $i; ?>/60);
var seconden = Math.floor(aantal_seconden_nog<?php echo $i; ?>-(60*minuut));
var dubbele_punt = ':';
if (minuut<=9) {
minuut = '0'+minuut;
}
if (seconden<=9) {
seconden = '0'+seconden;
}
document.tijd.tijd_input<?php echo $i; ?>.value = minuut+dubbele_punt+seconden;
}
else {
window.top.location.href = 'test.php';
}
}
window.setInterval('afteller<?php echo $i; ?>();',1000);
</script>
<input type="text" name="tijd_input<?php echo $i; ?>"><br/>
<?php
}
}
?>
</form>
weet iemand anders dan een andere manier?