Javascript x aantal functies

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tijs Gerats

Tijs Gerats

16/09/2011 10:34:44
Quote Anchor link
Hallo PHP'ers,

Ik en mn partner zitten weer es met een hersenkrakend probleem. Misschien zijn hier personen die ervaren zijn met Javascript?

Wat heb ik al voor mekaar:
- tijd en tijd later in een database
- een javascriptfunctie die het tijdsverschil laat aftellen

Wat wil ik voor mekaar krijgen:
In de game moeten mensen oneindig aanvallen kunnen doen, en ik wil de tijden laten zien hoelang de aanvallen nog duren. Ik moet dus alle vars(steeds dezelfde per aanval) door kunnen sturen naar een javascriptfunctie(die ik al heb) en die javascriptfunctie die moet mij dan in een div de tijden laten zien.

Ik heb alleen geen flauw idee hoe ik dit voor mekaar moet krijgen, hier een stukje code wat perfect werkt en wat ik had:

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
    $gettimes
= mysql_query("SELECT * FROM ..... WHERE ..... = '".$_SESSION['.....']."'");
    $rowtimes = mysql_fetch_assoc($gettimes);
            
    $targetYear   = substr($rowtimes['.....'],0,4);
    $targetMonth  = substr($rowtimes['.....'],5,2);
    $targetDay    = substr($rowtimes['.....'],8,2);
    $targetHour   = substr($rowtimes['.....'],11,2);
    $targetMinute = substr($rowtimes['.....'],14,2);
    $targetSecond = substr($rowtimes['.....'],17,2);

    $dateFormat = "Y-m-d H:i:s";

    $targetDate = mktime($targetHour,$targetMinute,$targetSecond,$targetMonth,$targetDay,$targetYear);
    $actualDate = time();

    $secondsDiff = $targetDate - $actualDate;

    $remainingDay     = floor($secondsDiff/60/60/24);
    $remainingHour    = floor(($secondsDiff-($remainingDay*60*60*24))/60/60);
    $remainingMinutes = floor(($secondsDiff-($remainingDay*60*60*24)-($remainingHour*60*60))/60);
    $remainingSeconds = floor(($secondsDiff-($remainingDay*60*60*24)-($remainingHour*60*60))-($remainingMinutes*60));

    $targetDateDisplay = date($dateFormat,$targetDate);
    $actualDateDisplay = date($dateFormat,$actualDate);
?>

        <script type="text/javascript">
    
          var days = <?php echo $remainingDay; ?>  
          var hours = <?php echo $remainingHour; ?>  
          var minutes = <?php echo $remainingMinutes; ?>  
          var seconds = <?php echo $remainingSeconds; ?>  
          
        function setCountDown ()
        {
            if(seconds == 0 && minutes == 0 && hours == 0){
            
            }
          else{
          seconds--;
          }
          
          if (seconds < 0){
              minutes--;
              seconds = 59
          }
          if (minutes < 0){
              hours--;
              minutes = 59
          }
          if (hours < 0){
              days--;
              hours = 23
          }
          document.getElementById("remain").innerHTML = "Je moet nog "+hours+":"+minutes+":"+seconds+" wachten.";
          setTimeout ( "setCountDown()", 1000 );
        }

        </script>


Deze code haalt dus 1 malig tijden op en haalt uren, minuten seconden los van mekaar... berekend het verschil en laat het aftellen. Wie me een goeie duw in de richting kan geven hoe ik die voor oneindige waardes voor mekaar kan krijgen ben ik eeuwig dankbaar. :D

~Tijs
 
PHP hulp

PHP hulp

08/05/2024 08:00:59
 
Tim van Norde

Tim van Norde

16/09/2011 12:30:58
Quote Anchor link
Je kunt van days hours seconds minutes arrays maken, en daar alle tijden inzetten. Dan moet je de divs opbouwen met bijvoorbeeld als id 'tijd_#', waar # voor een cijfer staat (uiteraard). Dan i.p.v. de div remains aan te passen, 'tijd_#' voor elke aanpassen.

Hoop dat je hiermee wat verder komt :)
 
Tijs Gerats

Tijs Gerats

16/09/2011 15:06:42
Quote Anchor link
Tim van Norde op 16/09/2011 12:30:58:
Je kunt van days hours seconds minutes arrays maken, en daar alle tijden inzetten. Dan moet je de divs opbouwen met bijvoorbeeld als id 'tijd_#', waar # voor een cijfer staat (uiteraard). Dan i.p.v. de div remains aan te passen, 'tijd_#' voor elke aanpassen.

Hoop dat je hiermee wat verder komt :)


Heb net es gekeken naar arrays in javascript... eerlijk gezegd heb ik nog nooit echt met arrays gewerkt(behalve de mysql_fetch_assoc arrays in php), hopelijk kom ik eruit. iig bedankt alvast! :D

EDIT:


Het werkt perfect maar 1 ding niet.

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
43
44
45
46
47
48
    <script type="text/javascript">
    var days = new Array();
    var hours = new Array();
    var minutes = new Array();
    var seconds = new Array();
    
    <?php
    for($i = 0; $i <= $numattacktimes-1; $i++)
    {

        echo "days[$i] = $rmnDayArr[$i];";
        echo "hours[$i] = $rmnHourArr[$i];";
        echo "minutes[$i] = $rmnMinutesArr[$i];";
        echo "seconds[$i] = $rmnSecondsArr[$i];";
        echo "var tot = $numattacktimes-1;";
    }
?>

    // jsArray now hold items from the phpArrays.
    
    function setCountDown ()
    {
        var i=0;
        
        for(i=0;i<=tot;i++)
        {
            if(seconds[i] == 0 && minutes[i] == 0 && hours[i] == 0)
            {                                                
                    window.location="<?php $PHP_SELF; ?>";                        
            }
            else
            {
                seconds[i]--;
            }
            
            if (seconds[i] < 0)
            {
                minutes[i]--;
                seconds[i] = 59
            }
            if (minutes[i] < 0)
            {
                hours[i]--;
                minutes[i] = 59
            }
            
            document.getElementById("remain"+i).innerHTML = ""+hours[i]+":"+((minutes[i] < 10) ? '0' + minutes[i] : minutes[i])+":"+((seconds[i] < 10) ? '0' + seconds[i] : seconds[i])+"<br />";
        }
        setTimeout ( "setCountDown()", 1000 );
    }
        </script>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
    $j
= 0;
    
    while($rowattacktimes2 = mysql_fetch_assoc($getattacktimes2))
    {

        echo '<div id="remain'.$j.'"><br />';
        $j++;
    }

?>


Na het weergeven van de 1e timer geeft hij een error dat document.getelementsbyid('remain' + i) null is. Heb geen flauw idee waarom, iemand die nog kan helpen?
Gewijzigd op 16/09/2011 22:48:36 door Tijs Gerats
 



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.