Script werkt niet bij meerder malen laden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mike Z

Mike Z

13/06/2012 16:45:37
Quote Anchor link
hallo,
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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...
 
PHP hulp

PHP hulp

16/06/2024 23:09:27
 
Koen Vlaswinkel

Koen Vlaswinkel

13/06/2012 19:12:37
Quote Anchor link
Wat krijg je uit de database? Probeer eens $tijdverschil, $tijd en $eindtijd te echo'en en kijken of de waardes zijn zoals verwacht.
 
Mike Z

Mike Z

13/06/2012 19:27:38
Quote Anchor link
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
 
- SanThe -

- SanThe -

13/06/2012 19:59:13
Quote Anchor link
Je moet elke <input> een unieke naam geven en voor elke input moet de functionnaam ook uniek zijn.
 
Mike Z

Mike Z

13/06/2012 20:07:20
Quote Anchor link
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?
 
- SanThe -

- SanThe -

13/06/2012 20:14:45
Quote Anchor link
<input type="text" name="tijd_input">
function afteller() {

<input type="text" name="tijd_input1">
function afteller1() {

<input type="text" name="tijd_input2">
function afteller2() {
 
Mike Z

Mike Z

13/06/2012 20:30:27
Quote Anchor link
moet ik
var begin_seconden =
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $tijdverschil ?>
;
var aantal_seconden = 0;

elke keer boven afteller{ zetten want nu werkt hij niet
 
- SanThe -

- SanThe -

13/06/2012 20:36:53
Quote Anchor link
Ik denk niet dat dit de juiste manier is. Ik weet zelf niet iets anders omdat ik geen Javascript expert ben. Bij 2 loopt het redelijk lekker, maar bij meer velden gaat het steeds miserabeler lopen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<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>
 
Mike Z

Mike Z

13/06/2012 21:28:09
Quote Anchor link
weet iemand anders dan een andere manier?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.