Demarrage d'un Cpt a rebours automatiquement + PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Demarrage d'un Cpt a rebours automatiquement + PHP

par JOHAAANNS » 11 avr. 2009, 01:19

Oui je sais c'est le bordel...
J'ai essayé, mais ca ne fonctionne pas :/

J'ai vu sur d'autre forum qu'il fallait changer le code de l'event.observe quand c'est une boulce...
genre

Code : Tout sélectionner

<script type="text/javascript"> $A(document.getElementsByClassName('test')).each(function(e) { Event.observe(e, "click", function(){ alert(e); }); });
mais cote javascript je suis un peu perdu et ca ne me parle pas du tout...:/

par Elie » 11 avr. 2009, 01:10

Simplifier ca donne ca :
<?php
if(!empty($_GET['id']))  {
	
	$sql = "SELECT * FROM stock_bois WHERE id=".$_GET['id'];
	$req = mysql_query($sql);
	$row = mysql_fetch_array($req);
	
	$delaiaff = ceil(($row['tps_recolte_bois']/$row['nbre_villageois'])*$row['max_stock_bois']);
	$duree_ajout_recolte = ceil(($row['tps_recolte_bois'] / $row['nbre_villageois'])*$row['max_stock_bois']);
	
	echo '<fieldset><legend>Récolte</legend>';
	
	echo '<div id="quota">';
	echo '<b>Quota</b>';
	echo '<br>&raquo; 1 stère/'.duree($duree_ajout_recolte);
	echo '<br>&raquo; '. $row['recolte_actuelle'].'/'.$row['max_stock_bois'].' Stock ';
	echo '<br><b>Fin de la récolte</b>';
	echo '<br>&raquo; '.date('d/m/y H:m:s', $row['date_fin'] );
	echo '<br><b>Bucheron</b>';
	echo '<br>&raquo; '.$row['nbre_villageois'];
	
	echo '<div id="comptearebours">
	
	<table width="100%" border="0" cellspacing="0" cellpadding="0">
	  <tr>
		<td>
	
		<form method="post" name="ajout">
	<input name="id_bois'.$row['id'].'" id="id_bois'.$row['id'].'" type="hidden" value="'.$row['id'].'" />
	</form>
	<script type="text/javascript">
	Event.observe(window, "load", function() {
		disp_delai(\'decompte'.$row['id'].'\','.$row['date_fin'].','.$duree_ajout_recolte.', new Date(), \'increase \', \'ajout\', \'id_bois'.$row['id'].'\', \'include/rebours.req.php\', \'resultat'.$row['id'].'\');
	});
	</script>
	
		<div id="decompte'.$row['id'].'"></div>
	
	</td>
		<td>
	&nbsp;
		</td>
	  </tr>
	</table>
	
	
	</div>
	</div>
	<div id="graphique">
	
	<div id="resultat'.$row['id'].'">'.graduation($row['tps_recolte_bois'],$row['nbre_villageois'],$row['max_stock_bois'],$row['recolte_actuelle'],$row['date_fin'], $row['id']).'</div>
	
	
	</div>
	</fieldset>';            

} 
?>
Mais je reste très septique sur tes fonctions ou il y a 10 milliards de paramètres.

par JOHAAANNS » 11 avr. 2009, 00:59

1 - L'include est enlevé ct une tuile ;)
2 - Ma requete est bien la, j'ai simplifié,
3 - Mon affichage a changé depuis donc tout va bien ;)
4 - merci de ta reponse, mais je ne comprend pourquoi faut il mettre autant de fois

Code : Tout sélectionner

disp_delai('decompte<?php echo $id; ?>',<?php echo $date_fin; ?>,<?php echo $duree_ajout_recolte; ?>,new Date(),'increase', 'ajout','id_bois<?php echo $id; ?>','include/rebours.req.php','resultat<?php echo $id; ?>');
puisque que je suis dans un boucle...

Normale que tu ne comprennes pas tout, j'essai de faire un barometre en live, c'est un peu le bordel mais ca fonctionne ;) le baromètre évolue en temps réel a chaque fois que le stock se rempli a tout les X secondes/minutes etc ;)

Tu n'as pas la totalité des fichiers ;)

voici ma page en question :
if (isset($_GET['id'])) 
{
$id_index= $_GET['id'];

$queryaff = "SELECT * FROM stock_bois WHERE id=".$id_index;
$resultaff = mysql_query($queryaff);
$rowaff = mysql_fetch_array($resultaff);



$id = $rowaff['id'];
$tps_recolte_bois = $rowaff['tps_recolte_bois'];
$nbre_villageois = $rowaff['nbre_villageois'] ;
$max_stock_bois = $rowaff['max_stock_bois'] ;
$recolte_actuelle = $rowaff['recolte_actuelle'] ;

$date_debut = $rowaff['date_debut'];
$date_echeance = $rowaff['date_echeance'];
$date_fin = $rowaff['date_fin'];

$delaiaff = ceil(($tps_recolte_bois/$nbre_villageois)*$max_stock_bois);


$duree_ajout_recolte = ceil(($tps_recolte_bois / $nbre_villageois)*$max_stock_bois);

echo '<fieldset><legend>R&eacute;colte</legend>';

echo '<div id="quota">';
echo '<b>Quota</b>';
echo '<br>&raquo;&nbsp;1&nbsp;st&egrave;re/'.duree($duree_ajout_recolte);
echo '<br>&raquo;&nbsp;'. $recolte_actuelle.'/'.$max_stock_bois.'&nbsp;Stock&nbsp;';
echo '<br><b>Fin de la r&eacute;colte</b>';
echo '<br>&raquo;&nbsp;'.date('d/m/y H:m:s', $date_fin );
echo '<br><b>Bucheron</b>';
echo '<br>&raquo;&nbsp;'.$nbre_villageois;
?>
<div id="comptearebours">

<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>

	<form method="post" name="ajout">
<input name="id_bois<?php echo $id; ?>" id="id_bois<?php echo $id; ?>" type="hidden" value="<?php echo $id; ?>" />
</form>
<script type="text/javascript">
function compteur() {

disp_delai('decompte<?php echo $id; ?>',<?php echo $date_fin; ?>,<?php echo $duree_ajout_recolte; ?>,new Date(),'increase', 'ajout','id_bois<?php echo $id; ?>','include/rebours.req.php','resultat<?php echo $id; ?>');


}

Event.observe(window, "load", 'compteur');

</script>

	<div id="decompte<?php echo $id; ?>"></div>

</td>
    <td>
&nbsp;
	</td>
  </tr>
</table>


</div>
<?php
echo '</div>';
?>
<div id="graphique">

<div id="resultat<?php echo $id; ?>"><?php echo graduation($tps_recolte_bois,$nbre_villageois,$max_stock_bois,$recolte_actuelle,$date_fin, $id); ?></div>




</div>
<?php
echo '</fieldset>';			
//

}
sur une autre page ma requete avec une boucle : (je sais c'est carrément tiré par les cheveux)
mysql_select_db($cnx_base);
$queryaff = "SELECT * FROM stock_bois";
$resultaff = mysql_query($queryaff);
while($rowaff = mysql_fetch_array($resultaff))
Mais c'est uniquement pour permettre un affichage en temps reele avec :
<script type="text/javascript">
new Ajax.PeriodicalUpdater('reponse<?php echo $rowaff['id']; ?>', 'include/rebours.aff.php?id=<?php echo $rowaff['id']; ?>', {
  frequency: <?php echo $duree_ajout_recolte; ?>
});
</script>
Enfin tout ca c'est de la bidouille surtout pour comprendre et essayer de faire qq chose qui se passe en live....;)

par Elie » 11 avr. 2009, 00:41

Euh sinon pour informations ton code c'est n'importe quoi, j'ai meme pas reussi a comprendre ce que tu cherchais a faire :)

par Elie » 11 avr. 2009, 00:39

1° On include pas un fichier dans une boucle
2° Tu fais une requete dans MySQL avec $rowaff mais qui n'est afficher nul part (Tu nous a simplifier ton code ?)
3° <form> entoure <fieldset> et pas l'inverse
4° Si tu dois avoir plusieurs compteur tu fais ca :

Code : Tout sélectionner

<script type="text/javascript"> function compteur() { disp_delai('decompte<?php echo $id; ?>',<?php echo $date_fin; ?>,<?php echo $duree_ajout_recolte; ?>,new Date(),'increase', 'ok','recutps','include/rebours.req.php','resultat<?php echo $id; ?>'); disp_delai('decompte<?php echo $id; ?>',<?php echo $date_fin; ?>,<?php echo $duree_ajout_recolte; ?>,new Date(),'increase', 'ok','recutps','include/rebours.req.php','resultat<?php echo $id; ?>'); disp_delai('decompte<?php echo $id; ?>',<?php echo $date_fin; ?>,<?php echo $duree_ajout_recolte; ?>,new Date(),'increase', 'ok','recutps','include/rebours.req.php','resultat<?php echo $id; ?>'); } Event.observe(window, "load", 'compteur'); </script>

par JOHAAANNS » 11 avr. 2009, 00:00

Alors l'événement avec le protype :

Code : Tout sélectionner

Event.observe(window, "load", function() { disp_delai('decompte<?php echo $id; ?>',<?php echo $date_fin; ?>,<?php echo $duree_ajout_recolte; ?>,new Date(),'increase', 'ok','recutps','include/rebours.req.php','resultat<?php echo $id; ?>') });
Fonctionne hors de ma boucle..;mais des que je l'a mets dans une boucle mes compteurs ne se lancent pas

Une idée..

Merci de vos reponses ;)

par Elie » 09 avr. 2009, 01:24

Ne marche que

Code : Tout sélectionner

<script type="text/javascript"> window.onload = disp_delai;; </script>
Si tu utilisais prototype tu pourrais lancer une fonction grace à :

Code : Tout sélectionner

Event.observe(window, "load", function() { disp_delai('decompte<?php echo $id; ?>',<?php echo $date_fin; ?>,<?php echo $duree_ajout_recolte; ?>,new Date(),'increase', 'ok','recutps','include/rebours.req.php','resultat<?php echo $id; ?>') });

Demarrage d'un Cpt a rebours automatiquement + PHP

par JOHAAANNS » 08 avr. 2009, 17:25

Bonjour a tous,

j'ai un petit soucis, je n'arrive pas a faire en sorte que mon compte a rebours démarre automatiquement des que nous sommes sur la page :

voici mon javascript compte a rebours :
function disp_delai(id,delai,echeance,now,action,nomform,obj,url,myspan)
{
	var termine = 0;
	
    var date_jour=new Date();
	var tps=(delai*1000 - date_jour.getTime())/1000;
    var j=Math.floor(tps/3600/24); // récupere le nb de jour
    tps=tps % (3600*24);
    var h=Math.floor(tps / 3600); // recupère le nb d'heure
    tps=tps % 3600;
    var m=Math.floor(tps/60); // récupère le nb minute
    tps=tps % 60
    var s=Math.floor(tps);
	
	
	var func = function()
			{
			disp_delai(id,delai,echeance,now,action,nomform,obj,url,myspan);
			}
		if  (tps>=0 )
	 	{ 
		
			
			if (j==0) var ss=" "; else var ss="s ";
			if (h<10) h="0"+h;
			if (m<10) m="0"+m; 
			if (s<10)  s="0"+s; 
		
		document.getElementById(id).innerHTML =  j +" jour" + ss + h + ":" + m + ":" + s;
		
		setTimeout(func,999);
		}
		else
		{		
			if (action =='increase')	 get_simple(obj,url,myspan);
			if (action =='autosub')	document.forms[nomform].submit();
			//if (termine==1)  document.getElementById(id).innerHTML = "Terminé";
			//else setTimeout(func,1000);
		}
}
et mon code PHP :
<?php
////////////////////////////////////////////
//////////////COMPTE A REBOURS//////////////
mysql_select_db($cnx_base);
$queryaff = "SELECT * FROM stock_bois";
$resultaff = mysql_query($queryaff);
while($rowaff = mysql_fetch_array($resultaff))
{
include ('include/rebours.inc.php');
?>
<script type="text/javascript">
new Ajax.PeriodicalUpdater('reponse<?php echo $id; ?>', 'include/rebours.req.php?id=<?php echo $id; ?>', {
  frequency: <?php echo $duree_ajout_recolte; ?> 
});
</script>

<div id="reponse<?php echo $id; ?>"></div>
<?php
echo '<fieldset><legend>R&eacute;colte(s)</legend>';
echo date('d/m/Y H:m:s', $date_fin );
echo '<br>st&egrave;re/'.duree($duree_ajout_recolte).'';
echo '<br>R&eacute;colte&nbsp;:&nbsp;'. $recolte_actuelle.'/'.$max_stock_bois.'&nbsp;Stock&nbsp;';
echo '<br>['.$duree_ajout_recolte.'s]';
echo '<br>Date&nbsp;actuelle&nbsp;:';
echo '<br>'.date('d/m/Y H:i:s', time());
echo '<br>['.time().']';
echo '<br>Actu+Echeance:';
echo '<br>['.(time()+$duree_ajout_recolte).']';
echo '<br>1 heure plus tard:';
echo '<br>['.(time()+3600).']';
echo '<br>Cal:'.ceil(($date_fin-$date_debut)/$max_stock_bois);
//(id,delai,echeance,now,action,nomform,obj,url,myspan)
?>
<form>
<input name="recutps" id="recutps" type="hidden" value="<?php echo $id; ?>" />
<script type="text/javascript">
window.onload=disp_delai('decompte<?php echo $id; ?>',<?php echo $date_fin; ?>,<?php echo $duree_ajout_recolte; ?>,new Date(),'increase', 'ok','recutps','include/rebours.req.php','resultat<?php echo $id; ?>');
</script>
</form>
<div id="decompte<?php echo $id; ?>"></div>


<div id="resultat<?php echo $id; ?>"><?php echo graduation($tps_recolte_bois,$nbre_villageois,$max_stock_bois,$recolte_actuelle,$date_fin, $id); ?></div>

<?php
echo '</fieldset>';	
}
///////////FINs///////////////////////////////////
///////////COMPTE A REBOURS///////////////////////
?>

C'est a ce niveau la qu'il y a un problème :
<script type="text/javascript">
window.onload=disp_delai('decompte<?php echo $id; ?>',<?php echo $date_fin; ?>,<?php echo $duree_ajout_recolte; ?>,new Date(),'increase', 'ok','recutps','include/rebours.req.php','resultat<?php echo $id; ?>');
</script>
Si quelqu'un a une idée ???
Merci d'avance