conception de site web :

- fonction js executée plusieurs fois

Site gratuit de petites annonces autos
Occasions Peugeot
Autres messages sur des sujets similaires :
Fonction onchange des select
editeur html pb de balise ki apparait plusieur fois
La fonction form peut elle accueillir une variable
Passer des variables du PHP vers JS et de JS vers PHP
appeller une fonction JS via un bouton
Cours HTML / Javascript / PHP disponibles :



 Retour Site Honolulu  |  Nouveau sujet  |  Retour aux sujets  |  Chercher  |  Connexion    
 fonction js executée plusieurs fois
Auteur: marion
(-195.abo.wanadoo.fr)
Date: 18-05-2005 15:29
2 messages postés sur  le developpement de site internet [ 2 msg ]
Bonjour,
Je dois afficher le temps de connexion de diffèrents postes, pour cela j'ai utilisé le chronomètre en javascript q'il y a en exemple sur le site. Le problème c'est que je dois avoir un chronomètre diffèrent pour chaque poste connectés ( que j'affiche avec une requête php) qui doivent s'afficher dès le chargement de ma page.
voici mon code:
<script>
function chrono(heur, minu, seco){
var centi=0
centi++;
if (centi>9){centi=0;seco++}
if (seco>59){seco=0;minu++}
if (minu>59){minu=0;heur++}
document.forsec.seca.value=" "+seco
document.forsec.secb.value=" "+minu
document.forsec.secd.value=" "+heur
compte=setTimeout('chrono()',100)
}
</script>
<!-- ************************************************************** -->
<!-- sélectionne la liste des postes -->
<?php
//connexion à la base de donnée
$cnx = mysql_connect("localhost", "root", "") or die("échec de la connexion");
//sélectionner la base
mysql_select_db("atomikweb") or die("échec de select_db");
//requête pour enregistrer l'heure de la connexion
$sql = "select poste, h_connect from poste where h_connect is not null order by h_connect";
//résultat
$liste_poste = mysql_query($sql) or die("échec de $sql");
//nombre de résultats
$nb = mysql_num_rows($liste_poste);
?>
<!-- ****************************************************************************************************************** -->
<!-- affiche la liste des postes -->
<div id="Layer1" style="position:absolute; left:1px; top:182px; width:286px; height:467px; z-index:1; background-color: #000099; border: 1px none #000000;">
<p> </p>
<table>
<font text="#FFFF00">
<?php
while($poste = mysql_fetch_array($liste_poste))
{
echo "<tr><td>" . $poste ["poste"] . "</td><td ></td>";
//récupère l'heure de la connexion*******************************
$timestamp = time();
//temps du chrono ************************************************
$temps = $timestamp - $poste ["h_connect"]; //secondes
//temps en minutes
$minu = intval ($temps / 60);
//reste en seconde
$sec = ($temps % 60)*60;
//temps en heure
$heu = intval ($minu / 60);
//reste en minute
$min = ($minu % 60)*60;
//formulaire chrono**********************************************
echo "<td align=\"center\">"?><form name="forsec" class="Style1">
<input type="text" size="3" name="secd">h
<input type="text" size="3" name="secb">m
<input type="text" size="3" name="seca">s
</form><?php "</td>";
}
//fermer connexion
mysql_close($cnx);
?>
</font>
</table>
</div>
<body
<?php for ($i=1; $i<= $nb; $i++) {?> onload="chrono(<?php $heu?>,<?php $min?>, <?php $sec?>)" <?php } ?> >

Merci d'avance pour ton aide.#clin#



Répondre à ce message
 
 Re: fonction js executée plusieurs fois
Auteur: honolulu
(---.adsl.proxad.net)
Date: 18-05-2005 23:15
1520 messages postés sur  le developpement de site internet [ 1520 msg ]
Salut,
dans ta boucle mysql (avec while), vu que tu crées tes form à la volée, tu incrémentes une variable et tu nommes différemment tes formulaires :

$nn++;
echo "<td align=\"center\">"?><form name='forsec",$nn,"' class="Style1">
<input type="text" size="3" name="secd">h
<input type="text" size="3" name="secb">m
<input type="text" size="3" name="seca">s
</form><?php "</td>";

et à la fin dans ta boucle finale, là aussi tu généres autant de fois que nécessaire l'appel à la fonction chrono() avec l'ajout de ta variable $nn


/* en toute logique $nb=$nn */
<body
<?php for ($i=1; $i<= $nb; $i++) {?> onload="chrono(<?php $i?>,<?php $heu?>,<?php $min?>, <?php $sec?>)" <?php } ?> >

et tu récupères ensuite ta variable $i dans ta fonction javascript pour savoir quels champs de quel formulaire doivent être chronométrés... si c'est 1, je chronomètre les champs de forsec1, 2 pour forsec2 etc etc...

je ne peux pas trop t'aider plus, je n'arrête pas de bosser en ce moemnt mais ce que je t'ai indiqué devrait t'aider quand même sinon fais moi signe...
#clin#

Répondre à ce message
 
 Re: fonction js executée plusieurs fois
Auteur: marion
(-250.abo.wanadoo.fr)
Date: 19-05-2005 14:58
2 messages postés sur  le developpement de site internet [ 2 msg ]
Merci pour ton aide mais ma fonction ne marche toujours pas, je comprend pas pourquoi j'ai suivi tes indications:
<script>
function chrono(i, heur, minu, seco){
var centi=0
centi++;
if (centi>9){centi=0;seco++}
if (seco>59){seco=0;minu++}
if (minu>59){minu=0;heur++}
document.forsec+i.seca.value=" "+seco
document.forsec+i.secb.value=" "+minu
document.forsec+i.secd.value=" "+heur
//commence la fonction au bout d'un dixième de seconde
compte=setTimeout('chrono(i, heur, minu, seco)',100)
}
</script>
$nn = 0;
while($poste = mysql_fetch_array($liste_poste))
{
$nn++;
echo "<tr><td align=\"right\"></td>";
echo "<td align=\"center\">"?><form name='forsec"<?php $nn?>"' class="Style1">
<input type="text" size="3" name="secd">h
<input type="text" size="3" name="secb">m
<input type="text" size="3" name="seca">s
</form><?php "</td>";
}
<body <?php for ($i=1; $i<=$nn; $i++) {?> onload="chrono(<?php $i?>,<?php $heu?>,<?php $min?>, <?php $sec?>)" <?php } ?> >

Merci d'avance pour ton aide, je suis sur que j'ai une erreur nulle mais je la trouve pas.#clin#

Répondre à ce message
 
 Re: fonction js executée plusieurs fois
Auteur: honolulu
(---.adsl.proxad.net)
Date: 20-05-2005 08:42
1520 messages postés sur  le developpement de site internet [ 1520 msg ]
...

parce que le mieux est de générer ta fonction js via php pour mieux maitriser ta variable : et au fait, tant qu'à faire, autant n'avoir qu'un form comprenant autant de champs que de postes (plutôt que de nombreux forms)

/* tu crées ta fonction chrono() au sein de ta boucle mysql */
/* $nb = nombre de postes */
for ($i=0;$i<$nb;$i++)
{
// pour créer tes champs
echo 'document.forsec.seca_',$i+1,'.value=" "+ ........';
echo 'document.forsec.secb_',$i+1,'.value=" "+........';
//etc etc
}

/* pour récupérer les valeurs par la suite */
/* $nb = total de postes connectés */

for ($i=0;$i<$nb;$i++)
{
$premier=${seca.($i+1)};
$deuxieme=${secb.($i+1)};
//....etc etc
}

L'appel à chrono() se fait ensuite classqiuement sans passer d evariable..

a++

Répondre à ce message
 Retour Site Honolulu  |  Liste des Forums    

 Liste des Forums  |  Nouvel utilisateur ? Enregistrez-vous ici 
 Connexion
 Nom d'utilisateur:
 Mot de passe:
 Enregistrer mon profil:
   
 Mot de passe perdu ?
Écrivez votre adresse Email ou votre Identifiant ci-dessous et un nouveau mot de passe sera envoyé sur l'Email lié à votre profil.
phorum.org
Honolulu : apprendre le html et le javascript