Bonjour,
Dans un jeux de stratégie, les joueurs ont la possibilité de créer des bâtiments.
Les bâtiments mettent un certain temps à être bâtit, ce temps est calculé par 2 variable dans une BDD:
- $myrow["temps"] -> l'heur en secondes du début de la construction
- $myrow["fin"] -> Chiffre indiquant le nombre de seconde que met le bâtiment à être construit.
Ils leurs est possible de construire plusieurs bâtiments en même temps.
Dans un while je génère un tableau affichant la liste des bâtiments en construction ainsi qu'un compte à rebours indiquant le temps restant avant le fin de construction de chaque bâtiment.
Mon script est le suivant :
Le problème est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84 $req = mysql_query("SELECT * FROM tconstru WHERE qui = '".$_SESSION['login']."' && Village = '$Nom' ORDER by temps DESC"); while ($myrow = mysql_fetch_array($req)) { echo "<span class='Style1'>En cours de construction :"; echo "<br><br><table width='500' border='1'>" ; echo " <tr>" ; echo "<span class='Style1' style='margin-right:3; margin-left:3;'>" ; echo "<tr><th></th>"; echo "<th>Temps restant</th></tr>"; $req = mysql_query("SELECT * FROM tconstru WHERE qui = '".$_SESSION['login']."' && Village = '$Nom' ORDER by temps DESC"); while ($myrow = mysql_fetch_array($req)) { echo "<tr><th><span class='style42'>"; echo "</span></th><th>"; /************** Temps Restant **************/ $Temps_1 = mktime(); $fin2_1 = ($Temps_1 - $myrow["temps"]); /* s écoulé */ $fin_1 = ($myrow["fin"] - $fin2_1); /* s restante */ $heure_1 = floor($fin_1 / 3600); if($heure_1 < 1) $heure_1 = 0 ; $minutes2_1 = (3600 * $heure_1); /* s prise par les heures */ $minutes1_1 = ($fin_1 - $minutes2_1); /* s restantes sans les heurs */ $minutes0_1 = floor($minutes1_1 * 60); $minutes_1 = floor($minutes0_1 / 3600); $seconde_1 = ($fin_1-(($minutes_1 * 60) + $minutes2_1)); /* s restantes sans les heurs et les minutes */ $heures = $heure_1 ; // les heures < 24 $minutes = $minutes_1 ; // les minutes < 60 $secondes = $seconde_1 ; // les secondes < 60 $annee = date("Y"); // par defaut cette année $mois = date("m"); // par defaut ce mois $jour = date("d"); // par defaut aujourd'hui $redirection = "Village.php?nom=$Nom"; // quand le compteur arrive à 0 $secondes = mktime(date("H") + $heures, date("i") + $minutes, date("s") + $secondes, $mois, $jour, $annee ) - time(); ?> <script type="text/javascript"> var temps = <?php echo $secondes;?>; var timer =setInterval('CompteaRebour()',1000); function CompteaRebour(){ temps-- ; j = parseInt(temps) ; h = parseInt(temps/3600) ; m = parseInt((temps%3600)/60) ; s = parseInt((temps%3600)%60) ; document.getElementById('minutes').innerHTML= (h<10 ? "0"+h : h) + ' h : ' + (m<10 ? "0"+m : m) + ' mn : ' + (s<10 ? "0"+s : s) + ' s '; if ((s == 0 && m ==0 && h ==0)) { clearInterval(timer); url = "<?php echo $redirection;?>" Redirection(url) } } function Redirection(url) { setTimeout("window.location=url", 500) } </script> <? echo "<body onLoad='timer'>"; echo "<div id='minutes' style='font-size: 12px;'></div></span>"; echo "<body>"; /***********************************************/ } echo "</th></tr></span>"; echo "</tr>"; echo "</table>"; } ?>
Un seul compte à rebours est affiché.
Ne connaissant absolument pas le Javascript je vien vous demandez votre aide, Merci .
Partager