Page 1 sur 5

pb de boucle

Posté : 11 mai 2010, 17:39
par hashut
je doit faire dans la meme page plusieur compte rebour dynamique
la date est une datetime sql mais pas moyen que sa marche sur plusieur
si je met sur un seul compte rebour cela marche nickel
mais des que j'en met deux ou plus un seul marche
voici le code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
include('../conf/conf.php');
$db = mysql_connect($serveur, $user, $passw);
mysql_select_db($bd_base ,$db);
$req_atts = "SELECT  * FROM Objet " ;
$reqs = mysql_query($req_atts) OR die('erreur dans la requete pour savoir l\'attaque continu');
while($datas = mysql_fetch_array($reqs)) 
{ 
$id= $datas['id'];
/////////////////////////////////////////////
$req_att = "SELECT  h_fin, DAY(h_fin) AS jour, MONTH(h_fin) AS mois, YEAR(h_fin) AS annee, HOUR(h_fin) AS heure, MINUTE(h_fin) AS minute, SECOND(h_fin) AS seconde  FROM Objet where id=$id ";
$req = mysql_query($req_att) OR die('erreur dans la requete pour savoir l\'attaque continu');
while($data = mysql_fetch_array($req)) 
{ 
$jour= $data['jour'];
$mois= $data['mois'];
$heure= $data['heure'];
$minute= $data['minute'];
$seconde= $data['seconde'];
$annee= $data['annee'];
}
$targetYear  = $annee ;
$targetMonth = $mois ;
$targetDay   = $jour ;
$targetHour  = $heure ;
$targetMinute = $minute ;
$targetSecond = $seconde ;
$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 ()
{
  seconds--;
  if (seconds < 0){
      minutes--;
      seconds = 59
  }
  if (minutes < 0){
      hours--;
      minutes = 59
  }
  if (hours < 0){
      days--;
      hours = 23
  }
if( days < 0 ){
	document.getElementById(<?php echo $id ?>).innerHTML =" Termin&eacute;s";
 
}
else
{		
  document.getElementById(<?php echo $id ?>).innerHTML = days+":"+hours+":"+minutes+":"+seconds;
   
}
  setTimeout ( "setCountDown()", 1000 );
}
</script>
</head>
<body onload="setCountDown();">
<?php echo $id ?>
<div  id=<?php echo $id ?>><?php echo "$remainingDay days, $remainingHour hours, $remainingMinutes minutes, $remainingSeconds seconds";?></div>
<?php
}
?>

quelqun as une idée
merci

Re: pb de boucle

Posté : 11 mai 2010, 17:40
par stealth35

Re: pb de boucle

Posté : 11 mai 2010, 17:52
par hashut
car maintenat c'est du php

Re: pb de boucle

Posté : 11 mai 2010, 17:55
par stealth35
car maintenat c'est du php
non puisque ton erreurs est dans ton javascript,
pourquoi tu fais 2 boucle avec une requete une pour allé cherché les id et l'autre pour allé cherche le reste ?

Re: pb de boucle

Posté : 11 mai 2010, 18:03
par hashut
ben sinon il m affiche que le dernier compte rebours

Re: pb de boucle

Posté : 11 mai 2010, 18:06
par stealth35
ben sinon il m affiche que le dernier compte rebours
suffis de faire
SELECT  h_fin, DAY(h_fin) AS jour, MONTH(h_fin) AS mois, YEAR(h_fin) AS annee, HOUR(h_fin) AS heure, MINUTE(h_fin) AS minute, SECOND(h_fin) AS seconde  FROM Objet

Re: pb de boucle

Posté : 11 mai 2010, 18:38
par stealth35
bon allé je suis gentil, prend exemple la dessus c'est quand meme beaucoup plus propre et plus simple
<?php
	$link 	= mysql_connect('127.0.0.1', 'root', '');
	$db		= mysql_select_db('test' ,$link);

	$req_atts 	= 'SELECT id, time FROM test';
	$reqs 		= mysql_query($req_atts) or exit(mysql_error());
	
	$datas		= array();
	
	while($data = mysql_fetch_object($reqs))
	{
		$datas[$data->id] = strtotime($data->time) * 1000;	
		printf('<div id="%d"></div>', $data->id);
	}
?>
<script type="text/javascript">
	//<![CDATA[
	var datas 	= <?php echo json_encode($datas) ?>;
		
	var timer = function()
	{
		var date = new Date();
		
		for(i in datas)
		{
			var div 	= document.getElementById(i);
			var diff 	= datas[i] - date.getTime();

			if(diff > 0)
			{
				var down 	= new Date(diff);
				var days	= Math.floor(diff / 8640000);

				div.innerHTML = days + ' days ' + down.getHours() + ' hours ' + down.getMinutes() + ' minutes ' + down.getSeconds() + ' seconds';
			}
			else
			{
				delete datas[i];
				div.innerHTML = 'Terminé';
			}			
		}

		window.setTimeout(timer, 1000);
	}
	
	window.setTimeout(timer, 1000);	
	//]]>
</script>

Re: pb de boucle

Posté : 11 mai 2010, 18:39
par hashut
marche pas cela m'affiche

compteur 1 (non dynamique)
1 days, 23 hours, 22 minutes, 24 seconds
compteur 2 (non dynamique)
1 days, 23 hours, 45 minutes, 24 seconds
compteur 3 (non dynamique)
1 days, 23 hours, 1 minutes, 53 seconds
compteur 4 celui si marche
1:23:1:39

Re: pb de boucle

Posté : 11 mai 2010, 18:42
par hashut
stealth35
il faut que mes compte rebours soit sur l'heure du serveur et pas sur le client

Re: pb de boucle

Posté : 11 mai 2010, 18:43
par stealth35
marche pas cela m'affiche

compteur 1 (non dynamique)
1 days, 23 hours, 22 minutes, 24 seconds
compteur 2 (non dynamique)
1 days, 23 hours, 45 minutes, 24 seconds
compteur 3 (non dynamique)
1 days, 23 hours, 1 minutes, 53 seconds
compteur 4 celui si marche
1:23:1:39
normale ta la meme fonction pour chaque, tu la redéfinies a chaque fois normale que seul le dernier marche :wink:
fais le code que je t'ai mis plus haut

Re: pb de boucle

Posté : 11 mai 2010, 18:45
par stealth35
stealth35
il faut que mes compte rebours soit sur l'heure du serveur et pas sur le client
pas rave au lieu de
var date = new Date();

tu fais
var date = <?php echo time() ?>

et plus loin
var diff = datas - date;

<pre>
<?php
	$link 	= mysql_connect('127.0.0.1', 'root', '');
	$db		= mysql_select_db('test' ,$link);

	$req_atts 	= 'SELECT id, time FROM test';
	$reqs 		= mysql_query($req_atts) or exit(mysql_error());
	
	$datas		= array();
	
	while($data = mysql_fetch_object($reqs))
	{
		$datas[$data->id] = strtotime($data->time) * 1000;	
		printf('<div id="%d"></div>', $data->id);
	}
?>
<script type="text/javascript">
	//<![CDATA[
	var datas = <?php echo json_encode($datas) ?>;
	var date  = <?php echo time() * 1000 ?>;
	
	var timer = function()
	{		
		for(var i in datas)
		{
			if(datas.hasOwnProperty(i))
			{
				var div  = document.getElementById(i);
				var diff = datas[i] - date;
	
				if(diff > 0)
				{
					var down = new Date(diff);
					var days = Math.floor(diff / 86400000);
	
					div.innerHTML = days + ' days ' + down.getHours() + ' hours ' + down.getMinutes() + ' minutes ' + down.getSeconds() + ' seconds';
				}
				else
				{
					delete datas[i];
					div.innerHTML = 'Terminé';
				}
			}	
		}
		date -= 1000;
		window.setTimeout(timer, 1000);
	};
	
	window.setTimeout(timer, 1000);
	//]]>
</script>

Re: pb de boucle

Posté : 11 mai 2010, 18:53
par hashut
ok pour l'heure serveur
mais pareil que le dernier est dynamique les autre non

Re: pb de boucle

Posté : 11 mai 2010, 18:56
par stealth35
ok pour l'heure serveur
mais pareil que le dernier est dynamique les autre non
avec mon truc ?
montre le code source de ta page html

Re: pb de boucle

Posté : 11 mai 2010, 19:02
par hashut

Code : Tout sélectionner

<?php $link = mysql_connect('127.0.0.1', 'root', 'root'); $db = mysql_select_db('test' ,$link); $req_atts = 'SELECT id, h_fin FROM Objet'; $reqs = mysql_query($req_atts) or exit(mysql_error()); $datas = array(); while($data = mysql_fetch_object($reqs)) { $datas[$data->id] = strtotime($data->time) * 1000; printf('<div id="%d"></div>', $data->id); } ?> <script type="text/javascript"> //<![CDATA[ var datas = <?php echo json_encode($datas) ?>; var timer = function() { var date = <?php echo time() ?>; for(i in datas) { var div = document.getElementById(i); var diff = var diff = datas[i] - date; if(diff > 0) { var down = new Date(diff); var days = Math.floor(diff / 8640000); div.innerHTML = days + ' days ' + down.getHours() + ' hours ' + down.getMinutes() + ' minutes ' + down.getSeconds() + ' seconds'; } else { delete datas[i]; div.innerHTML = 'Terminé'; } } window.setTimeout(timer, 1000); } window.setTimeout(timer, 1000); //]]> </script>
je mate sa demain
bonne soiree all merci

Re: pb de boucle

Posté : 11 mai 2010, 19:05
par stealth35
normale chez toi $data->time n'existe pas (et ta pas recopier le bon code), bizarre que ca t'affiche pas d'erreur tu devrais les activés c'est galere sinon pour bosser

php.ini

Code : Tout sélectionner

display_errors = On error_reporting = E_ALL | E_STRICT