Page 1 sur 2

Rafraichir all client

Posté : 19 mai 2010, 18:42
par hashut
re slt

j'ai créer un compte rebour je doit metre un bouton submit pour ajouter du temp
comment faire pour quand j'ajoute du temp pour que tous les client connecter a la page soit actualiser
la je bloque encore
le compte rebour : php-avance/hebergeur-t253448.html
merci de votre aide

Re: Rafraichir all client

Posté : 19 mai 2010, 18:44
par stealth35
re :wink:
il faudrait que ta page s'actualise tout les X temps

Re: Rafraichir all client

Posté : 19 mai 2010, 18:44
par hashut
pas moyen de faire autrement ?

Re: Rafraichir all client

Posté : 19 mai 2010, 18:47
par stealth35
pas moyen de faire autrement ?
non, ou alors en flash ou java.
apres en AJAX avec une actualisation par exemple tout les 5 secondes c'est presque transparent

Re: Rafraichir all client

Posté : 19 mai 2010, 18:50
par hashut
en ajax ok je teste sa demain merci stealth35
bonne soirée =D>

Re: Rafraichir all client

Posté : 22 mai 2010, 16:00
par hashut
slt

bon teste ajax mais je n'arrive

Code : Tout sélectionner

<script> function refresh_div() { var xhr_object = null; if(window.XMLHttpRequest) { // Firefox xhr_object = new XMLHttpRequest(); } else if(window.ActiveXObject) { // Internet Explorer xhr_object = new ActiveXObject('Microsoft.XMLHTTP'); } var method = 'POST'; var filename = 'rebourOK.php'; xhr_object.open(method, filename, true); xhr_object.onreadystatechange = function() { if(xhr_object.readyState == 4) { var tmp = xhr_object.responseText; document.getElementById('1').innerHTML = tmp;//la je voudrais que tous les div soit actualiser } } xhr_object.send(null); setTimeout('refresh_div()', 2000); } </script> <?php include('../conf/conf.php'); $db = mysql_connect($serveur, $user, $passw); mysql_select_db($bd_base ,$db); $sql = " SELECT id_Objet, h_fin FROM Objet "; $req = mysql_query($sql) or exit(mysql_error()); $tb = array(); while($data = mysql_fetch_object($req)) { $df=$data->h_fin; $Num=$data->id_Objet; echo"<form method='POST' enctype='multipart/form-data'>"; printf('<div id="%d"></div>', $data->id_Objet); $tb[$data->id_Objet] = strtotime($data->h_fin) * 1000; echo"<input type='hidden' name='Num' value='$Num'>"; echo'</form>'; } ?> <script type="text/javascript"> function refrech() { top.recapProjet.location.reload(); } var date_fin = <?php echo json_encode($tb) ?>; var date = <?php echo time() * 1000 ?>; var timer = function() { for(var i in date_fin) { if(date_fin.hasOwnProperty(i)) { var div = document.getElementById(i); var diff = date_fin[i] - date; if(diff > 0) { var down = new Date(diff); var days = Math.floor(diff / 86400000); div.innerHTML =days+ ' days ' +down.getUTCHours()+ ' hours ' +down.getMinutes() + ' minutes ' +down.getSeconds()+ 'seconds<BR><BR><? echo"<input type=submit name=ajouplus value=Ajouter>"; ?>'; } else { delete date_fin[i]; div.innerHTML = 'Termin&eacute;'; } } } date += 1000; window.setTimeout(timer, 1000); }; window.setTimeout(timer, 1000); </script> <body onload='refresh_div();'> <? if(isset($ajouplus)){ $Num=$_POST['Num']; $sql = " SELECT h_fin FROM Objet where id_Objet='$Num' "; $req = mysql_query($sql) or exit(mysql_error()); while($datas = mysql_fetch_array($req)) { echo"$num"; $h_fin= $datas['h_fin']; $getimes=strtotime($h_fin); $temp=$getimes+10; $temps=date('Y-m-d H:i:s',$temp); mysql_select_db($bd_base, $db); $sql2 = "UPDATE Objet SET h_fin='$temps' WHERE id_Objet='$Num'"; mysql_query($sql2) or die('Erreur SQL !'.$sql2.''.mysql_error()); } } ?>

Re: Rafraichir all client

Posté : 24 mai 2010, 17:10
par stealth35
dans ton responseText , y'a quoi ?

Re: Rafraichir all client

Posté : 25 mai 2010, 10:52
par hashut
je sais pas j avous je comprend rien as ajax
je foudrais une actualisation des compteur cote serveur
comme sa chaque client on le meme temps sur les compteur

Re: Rafraichir all client

Posté : 25 mai 2010, 11:02
par stealth35
je foudrais une actualisation des compteur cote serveur
c'est pas possible

Re: Rafraichir all client

Posté : 25 mai 2010, 11:19
par Berzemus
Ce que tu cherches à faire (mettre à jour le compteur de tous les visiteurs lorsqu'un d'eux effectue une action) est éventuellement possible (long-polling/comet ou ajax), mais il faut déjà avoir un certain niveau pour pouvoir la mettre en place.

Un solution plus simple consisterait en un iframe affichant une page contenant le compteur, qui se rafraichirait toutes les X secondes.

Ne t'attends cependant pas à ce que je te fournisse le code exact :wink:

Re: Rafraichir all client

Posté : 25 mai 2010, 11:21
par hashut
je peut pas faire en sorte que tous les client on le meme compteur ?
si la page s'actualise elle actualise les compteur aussi non ?

Re: Rafraichir all client

Posté : 25 mai 2010, 11:22
par stealth35
je peut pas faire en sorte que tous les client on le meme compteur ?
si la page s'actualise elle actualise les compteur aussi non ?
l'actualisation se fera coté client, tout les 5 secondes par exemple, et ca sera chez tout le monde pareil a 5 secondes prêt

Re: Rafraichir all client

Posté : 28 mai 2010, 17:24
par hashut
slt
bon j'ai fait sa mais tjr blem
cela rafraichir mais il ne recharche pas les donner de la base
qui peut m'aide j'en peut plus de se code
<script language="javascript" type="text/javascript"> 
function refresh_div() { 
    var xhr_object = null; 
    if (window.XMLHttpRequest) { 
        xhr_object = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { 
        try { 
            xhr_object = new ActiveXObject('Microsoft.XMLHTTP'); 
        } catch(e) { 
        } 
    } else { 
    } 
    var method = 'POST'; 
    var filename = 'rebourOK.php'; 
    xhr_object.open(method, filename, true); 
    xhr_object.onreadystatechange = function() { 
        if(xhr_object.readyState == 4) { 
            var tmp = xhr_object.responseText; 
            document.getElementById('test').innerHTML = tmp; 
               if (tmp == "ok")  {  
        alert("son ok") ;               
          } 
        var timer=setTimeout("refresh_div()",5000); // rafraichie toute les 1sec 
        } 
    } 
    xhr_object.send(null); 
} 
</script>
<div id="test">
<?php
include('../conf/conf.php');
 $db = mysql_connect($serveur, $user, $passw);
 mysql_select_db($bd_base ,$db);
 $sql     = " SELECT id_Objet, h_fin FROM Objet ";
 $req     = mysql_query($sql) or exit(mysql_error());
 $tb    = array();
  while($data = mysql_fetch_object($req))
  {
  	$df=$data->h_fin;
 	$Num=$data->id_Objet;
 	echo"<form method='POST' enctype='multipart/form-data'>";
    printf('<div id="%d"></div>', $data->id_Objet);
    $tb[$data->id_Objet] = strtotime($data->h_fin) * 1000;
    echo"<input type='hidden' name='Num' value='$Num'>";
    
    echo'</form>';



  }
?>

 <script type="text/javascript">

  var date_fin = <?php echo json_encode($tb) ?>;
  var date  = <?php echo time() * 1000 ?>;
  var timer = function()
  {       
    for(var i in date_fin)
    {
      if(date_fin.hasOwnProperty(i))
      {
        var div  = document.getElementById(i);
        var diff = date_fin[i] - date;
  
        if(diff > 0)
        {
          var down = new Date(diff);
          var days = Math.floor(diff / 86400000);
		  div.innerHTML =days+ ' days ' +down.getUTCHours()+ ' hours ' +down.getMinutes() + ' minutes ' +down.getSeconds()+ 'seconds<BR><BR><? echo"<input type=submit name=ajouplus value=Ajouter>"; ?>';
        }
          else
        {
          delete date_fin[i];
          div.innerHTML = 'Termin&eacute;';
        }
      }     
    }
    date += 1000;
    window.setTimeout(timer, 1000);
  };
  window.setTimeout(timer, 1000);
</script>

<BODY onLoad="refresh_div();">

<?
if(isset($ajouplus)){

$Num=$_POST['Num'];
 $sql     = " SELECT  h_fin FROM Objet where id_Objet='$Num'  ";
 $req     = mysql_query($sql) or exit(mysql_error());
while($datas = mysql_fetch_array($req)) 
{ 
echo"$num";
$h_fin= $datas['h_fin'];

$getimes=strtotime($h_fin);
$temp=$getimes+10;
$temps=date('Y-m-d H:i:s',$temp);

mysql_select_db($bd_base, $db);
$sql2 = "UPDATE Objet SET  h_fin='$temps' WHERE id_Objet='$Num'";
mysql_query($sql2) or die('Erreur SQL !'.$sql2.''.mysql_error());

	
}
}
?>
</div>




Re: Rafraichir all client

Posté : 28 mai 2010, 17:30
par stealth35
la ta tout changer pourquoi y'a des formulaires ?

Re: Rafraichir all client

Posté : 28 mai 2010, 17:33
par hashut
ben c'est juste 4 compte rebour avec un bouton pour ajouter du temp
je veut que sa actulise pour que chaque client on le meme temp qui s'affiche