Version complète: sur le forum Webmaster Hub : Compte à rebours coté serveur
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > AjaX et JavaScript
vince_30
Bonjour

je vous explique mon petit problème, je souhaite créer un compte à rebours paramétrable sur mon site .

Je vais tâcher d'être le plus claire possible, dans ce compteur il y aurai 2 parties,

La partie administrateur qui permettrai de configurer le compteur de le lancer, de le mettre en pause et de le réinitialiser (pour cette partie rien de bien compliqué en javascript)

C'est maintenant que cela se corse

La partie visiteurs doit permettre de voir le compteurs mais au chargement de la page le compteur doit se trouver dans l'état dans laquelle il se trouve (si par exemple il est 14mn22 il doit afficher ce moment là)

Pour le moment j'ai pas trouver comment faire j'avais penser à stoqué le compteur dans une base de donnée mais je suis pas sur que mon serveurs supportes autant de reqêtes

Si quelqu'un à une idée je suis preneur

Portekoi
Une piste : enregistre l'heure de départ.

Lorsque le visiteur affiche la page, tu récupère cette heure et tu "retranches" le temps passé en prenant toujours l'heure du serveur.

Exemple : Ton compteur à débuter à 15H23.21Sec à 15Min21Sec.

Moi je me pointe 10 minutes plus tard donc à 15H33.21Sec soit un compteur à 5Min21Sec smile.gif
vince_30
L'idée est bonne mais je veut pouvoir arreter ce compte à rebours - comment le visiteurs va le savoir que le chrono à été arreter
Portekoi
Ben enregistre aussi l'heure à l'arrêt. Lorsque tu redéclenches ton compteur, tu l'enregistre comme un nouveau départ smile.gif
vince_30
Ce système ne marchera étant donnée que j'aurai beaucoup d'arrêt

Ce que je veut faire c'est pour suivre un match de hockey avec le temps en direcct
Portekoi
Dans ce cas, utilise un fichier texte smile.gif

Et tu le réécris toutes les secondes... par super mais mieux que de requêter toutes les secondes....
Dadou
Pourquoi le ré-écrire toute les secondes, juste indiquer dedans un tout petit peu plus d'infos :

CODE
last_modif = 15:43:33;
state = stop;
last_time = 1333;


Ou last_modif correspond à l'heure du changement d'état, state pour savoir si le chrono est en route ou non et last_time correspond au temps écoulé lors du dernier changement d'état.

Si state = stop, le temps indiqué sera 1333 (enfin à toi de convertir les secondes en mm:ss), si le state = active, alors le temps indiqué sera (NOW-last_modif) + last_time puis dans la page le javascript prend le relai (moins d'écritures c'est mieux)
Portekoi
Ben c'est ce que je lui ai proposé 4 posts plus haut smile.gif
petit-ourson
Tu crées un programme (Java, C, C++, ou ce que tu veux) dans lequel tu fais tourner ton compteur.

Au sein même se se programme tu mets en place deux webservices :

- Un qui te permettra de commander ton compteur (arrêt, remise à zéro, pause, etc, etc).
- Un autre qui te permettra de récupérer les infos de ce compteur (temps, état, etc).

Mais dans tous les cas, tu vas être obligé de faire toutes les secondes un accès entre le client et ton serveur pour connaitre l'état de ton compteur.

Dadou
CITATION(Portekoi @ mercredi 12 mars 2008 à 16:04) *
Ben c'est ce que je lui ai proposé 4 posts plus haut smile.gif


Arf ma faute, je l'avais pas compris comme ça
vince_30
J'ai trouvé une partie de la solution pour le compteur il me manque plus que la fonction pause

voici mon code

CODE
<?
$dateenvoitime=date('Y-m-d H:i:s',$dateenvoi);
$nbSecondes= 1200 -(mktime($dateenvoitime) % 1200);
$date=date('i:s',$nbSecondes);
echo $date;

?>


<script>

function Decompte() {
window.document.form1.tempsRestant.value = heure+':'+min+':'+sec;;
if (window.document.form1.tempsRestant.value == 0) {
window.clearInterval(x);
window.document.form1.submit.disabled = false;
window.document.getElementById("reponse").style.visibility="visible";
}
}

function init()    {
    x = window.setInterval('Decompte()', 1000);
}

function initCompteur()
{
tempsSession();
init();

}
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.