Decompte php/javascript

Plopy21 Messages postés 3 Statut Membre -  
 guytou -
Bonjour,
J'aimerai bien faire un compte à rebours en php/javascript pour gérer les attaques dans un jeu en ligne.

Pour la partie php ça va par contre pour le javascript c'est une autre histoire.
Tout va bien tant qu'il n'y a qu'une attaque mais le problème c'est que quand il y a 2 attaque j'aimerai bien que sa affiche 2 compte à rebours (un pour chaque attaque).

<script language="JavaScript">
               
function t()
{
	var compteur=document.getElementById('compteur');
	s=duree;
	m=0;h=0;
	if(s<0)
	{
		compteur.innerHTML="<br />"
	}
	else
	{
		if(s>59)
		{
			m=Math.floor(s/60);
			s=s-m*60
		}
		if(m>59)
		{
			h=Math.floor(m/60);
			m=m-h*60
		}
		if(s<10)
		{
			s="0"+s
		}
		if(m<10)
		{
			m="0"+m
		}
		compteur.innerHTML=h+":"+m+":"+s+"<br />"
	}
	duree=duree-1;
	window.setTimeout("t();",999);
}
			
</script>
				
	<div id="compteur"></div>
	<?php
	IF($pseudo == $recherche_bdd_combat['pseudo_attaquant'])
	{ 
		?><a href="enter.php">rappeler les hommes</a><?php
	}
	$timestamp = time();
	$timestamp_final = $recherche_bdd_combat['timestamp_final'];
	$temps = $timestamp_final - $timestamp;
	?>
<script language="JavaScript">
	duree="<?php echo $temps ?>";
	t();
</script>
A voir également:

4 réponses

Smoking bird Messages postés 911 Statut Membre 58
 
ton problème est lié au fait que tu veux utiliser du javascript et du php en même temps, mais pas de la bonne façon. N'oublis pas que javascript s'execute côté client, et php, côté serveur uniquement.

ceci est donc invalide, et ne peut pas fonctionner:
<script language="JavaScript">
	duree="<?php echo $temps ?>";
	t();
</script>


utilise des fonctions de temps de javascript, ou alors renseigne toi sur les technologies AJAX, ça devrait t'aider^^
0
Plopy21 Messages postés 3 Statut Membre
 
je viens d'essayer en mettant ça mais ça ne marche pas

var date_final = <?php echo $timestamp_final ?>;
var date = <?php echo $timestamp ?>;
var temps = date_final - date;

duree=temps;
0
Smoking bird Messages postés 911 Statut Membre 58
 
ça ne risque pas, cf plus haut.
0
Plopy21 Messages postés 3 Statut Membre
 
Je vois bien comment récupérer la date (sous forme de timestamp) en javascript mais je ne vois pas comment faire pour avoir la date_final sans faire comme j'ai fait.

J'ai regarder avec Ajax mais d'après ce que j'ai compris il faut transmettre les variable par POST ou GET mais là ma variable vient directement de ma bdd.

Ne saurais tu pas comment faire pour que ca fonctionne ?
0
guytou
 
je crois que ça devrait aller comme suit :
<script language="JavaScript">

function t()
{
var compteur=document.getElementById('compteur');
s=duree;
m=0;h=0;
if(s<0)
{
compteur.innerHTML="<br />"
}
else
{
if(s>59)
{
m=Math.floor(s/60);
s=s-m*60
}
if(m>59)
{
h=Math.floor(m/60);
m=m-h*60
}
if(s<10)
{
s="0"+s
}
if(m<10)
{
m="0"+m
}
compteur.innerHTML=h+":"+m+":"+s+"<br />"
}
duree=duree-1;
window.setTimeout("t();",999);
}

</script>

<div id="compteur"></div>
<?php
IF($pseudo == $recherche_bdd_combat['pseudo_attaquant'])
{
?><a href="enter.php">rappeler les hommes</a><?php
}
$timestamp = time();
$timestamp_final = $recherche_bdd_combat['timestamp_final'];
$temps = $timestamp_final - $timestamp;
?>
<?php echo '<script language="JavaScript">
duree="'.$temps.'";
t();
</script>'; ?>
0