Affichage de plusieurs compte à rebours dans un while php
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 :
Code:
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>";
}
?> |
Le problème est le suivant :
Un seul compte à rebours est affiché.
Ne connaissant absolument pas le Javascript je vien vous demandez votre aide, Merci .