begin process at 2012 05 28 11:53:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Aide pour affichage d'un compte à rebours


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Aide pour affichage d'un compte à rebours

lundi 7 mars 2011 à 13:12:54 | Aide pour affichage d'un compte à rebours

donkeykong

Bonjour à tous.

Je suis débutant en PHP et pour m'initier j'ai voulu créer une petite page sans trop me prendre la tête (et qui n'a aucune utilité puisque c'est pour m'initier) :

Code PHP :
<body>
<?php 
/* variables */
$nombre_maisons = 0;
$temps = 10;

/*corps */
echo "Nombre de maisons :  </br>";
echo "$nombre_maisons </br>";
echo "</br> Chrono : </br>";

echo "<input type='button' value='Construire' name='construire'>" ;

?>
 
</body>
</html>


Bien sûr, ce code n'est pas encore terminé.
Explication de ce que je voudrais arriver à faire : on a au début un nombre de maison égal à zéro, quand on appuie sur le bouton "construire" un compte à rebours de 10 secondes se lance, à la fin de ce compte à rebours $nombre_maisons est incrémenté de 1.

J'essaie notamment d'afficher le compte à rebours en temps réel sur l'écran, c'est à dire que je voudrais faire en sorte que le défilement des chiffres s'affiche.

J'avais pensé à une fonction qui serait lancée lors du clic sur le bouton :
Code PHP :
function chrono()
{
	while ($temps > 0)
	{
		echo "$temps </br>";
		$temps--;
	}
}


Mais de 1) ça affiche "10987654321" alors que moi je veux "10", puis "9", etc...
et de 2) ça ne marche pas quand j'appelle la fonction avec "onclick" sur le bouton "construire".

Pouvez vous me donner quelques indications sur ce que je devrais faire s'il vous plait ?
Uniquement sur l'affichage du chrono, le reste je me débrouilles.
Merci d'avance.
lundi 7 mars 2011 à 14:48:46 | Re : Aide pour affichage d'un compte à rebours

ludwig59

Bonjour,

Tu peux regarder du côté de a fonction settimeout qui te permet d'appeler une fonction toute les n millisecondes.
Tu peux donc, toute les secondes appeler une fonction qui décrémente le chrono de 1
lundi 7 mars 2011 à 15:06:18 | Re : Aide pour affichage d'un compte à rebours

donkeykong

Merci ça va m'aider je pense.

Mais pour afficher le décompte ?
lundi 7 mars 2011 à 15:09:19 | Re : Aide pour affichage d'un compte à rebours

ludwig59

Tu peux, dans une div avec un id, afficher la valeur 10, puis dans la fonction qui décrémente le chrono, changer la valeur de la div avec la nouvelle valeur.
lundi 7 mars 2011 à 16:11:09 | Re : Aide pour affichage d'un compte à rebours

donkeykong

Et ça va se rafraichir automatiquement ?
mardi 8 mars 2011 à 00:34:29 | Re : Aide pour affichage d'un compte à rebours

007Julien


Le PHP c'est fait pour construire une page et s'en débarrasser le plus vite possible pour ne pas surcharger le serveur !

Ce n'est donc pas une très bonne idée pour commencer le PHP, que d'essayer d'actualiser des données toutes les secondes...

Et puis le setTimeout est une fonction javascript !

Mieux vaudrait chercher à afficher un diction pour chaque jour de la semaine ou du mois, sur un fond d'écran variable suivant l'heure du jour à l'ouverture de la page.
mardi 8 mars 2011 à 11:34:48 | Re : Aide pour affichage d'un compte à rebours

donkeykong

Ca je sais faire ;)

Pour le reste je pensais à un compte à rebours comme ceux qu'il y a sur certains site comme rapidshare, pour ça je fais quoi ?
mardi 8 mars 2011 à 12:47:11 | Re : Aide pour affichage d'un compte à rebours

007Julien


En javascript cela pourrait donner ceci :
Code Javascript :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>Untitled</title>
<style type="text/css">
body {font-size:48px;text-align:center}
p{width:400px;margin:40px auto;}
</style>
</head>
<body id="bdy">
<p>Attention,<br>je vais me désintégrer dans<br><span id="idc"></span> secondes !</p>
<script type="text/javascript">
var n=10;
function car(){
	document.getElementById('idc').innerHTML=n--;
	if (0<n) setTimeout(car,1000);
	else {n=10;document.getElementById('idc').innerHTML=0;exp()}
}
function exp(){
	if (document.getElementById('bdy').style.backgroundColor!='#000')
	  document.getElementById('bdy').style.backgroundColor='#000';
	else document.getElementById('bdy').style.backgroundColor='#fff000';
	if (0<n--) setTimeout(exp,100+Math.round(100*Math.random()));
}
car();
</script>
</body>


Maintenant, s'il s'agissait d'autre chose, il conviendrait de disposer d'un lien ou d'une description un peu plus explicite du compte à rebours souhaité ?

mardi 8 mars 2011 à 13:31:42 | Re : Aide pour affichage d'un compte à rebours

donkeykong

Voilà Julien, tu as exactement compris ce que veux.

Maintenant vu que je m'y connais un peu moins en javascript que toi, peux tu un peu m'expliquer ton code s'il te plait ?
mardi 8 mars 2011 à 14:51:54 | Re : Aide pour affichage d'un compte à rebours

007Julien

Mon code comprend une variable globale n (définie à l'extérieur des fonctions cette variable est accessible dans tout le script), dont la valeur initiale est fixée à 10 (1ère ligne); puis, deux fonctions nommées car (comme compte à rebours) et exp (comme explosion).

La première de ces fonctions récupère, par son identifiant (instruction document.getElementById('idc')) l'objet, que constitue le span dans le DOM (en quelque sorte un duplicata du document constitué non plus de balises HTML mais d'objets) pour changer le code inclus (innerHTML) entre les deux balises (le vide initial compris entre le <span id="idc"> et </span>) en la valeur de n (soit 10), puis décrémenter n (le n--) qui décrémente après cette insertion (un --n décrémanterait avant et le compte à rebours commencerait à 9). Cette fonction compare ensuite la valeur de n à zéro pour se relancer (le setTimeout(car,1000)) au bout de 1000 millisecondes si n est positif et, au contraire, lancer la deuxième fonction, après avoir remis le compteur n à 10 et mis à 0 la valeur incluse entre les deux balises du span.

Maintenant, la seconde fonction a sensiblement la même structure, mais les modifications portent sur la couleur de fond du body (identifié par un id="bdy"), accessible par la proriété backgroundColor du style de l'objet correspondant.

Cette seconde fonction se rappelle aussi dix fois (vriante sur le comptage dans le test de comparaison) à un rythme plus soutenu pour simuler l'explosion annoncée. Ici, Math.random() délivrant un nombre aléatoire compris entre 0 et 1, la multiplication par 100 puis l'arrondi et l'ajout de 100 permettent d'obtenir un entier alétaoire compris entre 100 et 200 assurant la vision du changement de couleur de fond (on pourrait d'ailleurs descendre tout en restant au dessus d'une trentaine de secondes compte tenu de la persitance des impressions lumineuses).

J'en aurais terminé, en ajoutant que la dernière ligne (le car();) appelle la fonction car puis en précisant que ce script était placé à la fin du body pour que le DOM existe lors de son éxecution (placé dans le header il aurait fallu attendre que le document soit chargé pour lancer le script avec une balise d'ouverture du body modifiée <body id"bdy" onload="car()">.

Autrement dit, avec le HTML on plante le décors que l'on anime avec un script. À vous de jouer. Ouf !






1 2

Cette discussion est classée dans : code, temps, echo, compte, rebours


Répondre à ce message

Sujets en rapport avec ce message

Gestion d'évènement souris [ par BSide ] Bonjour,j'essaie depuis un sacré moment de faire fonctionner le code qui suit...(récupéré dans la source de MySQL)Impossible de le faire tourner !!! L probleme avec un tableaux (ou est l'erreur??) [ par h2h ] salut tout le monde, jai un probleme avec ce tableaux.. en fait ce tableaux affiche bien ce ke je veu mai le prob cest kil décale tout d'une ligne ce SELECT ds un tablo avec un <tr> coloré sur deux [ par MisterJAD ] J'ai fait un SELECT* dans une table, je l'ai mis dans tableau, mais je voudrais, pour plus de lisibilité s'il y a un grand nombre d'enregistrement fai formulaire a retardement ????? [ par alvaro ] Salut, je ne conprend pas pourquoi! pourquoi... pourquoi...c'est un passage de variable par formulaire. Sous ie4, ou modzila il faut attendre 10s sur Rien ne rentre dans ma base... [ par dchevalier ] Bonjour,J'utilise Easy PHP et Dreamweaver MX 2004.J'ai crée un formulaire pour rentrer les coordonnées de mes clients dans une base. Ma requête d'inse pb comparaison string [ par fmazoue ] ca doit etre tout con mais la je vois pas l'erreur je doit etre bigleu !!!voila le bout de code : echo "comparaison entre ".$pwd." et ".$info[$i]["ntp session ne fonctionne pas....!!! [ par michong ] salut a tousalors voilajai désespérément essayé de faire fonctionner ces variables de sessions mais sans succéesje me suis dit que ssa doit etre mon c Limiter le nombre de résultat d'un 'readdir()' [ par Miloflyer ] Bonsoir, me revoici... Voici le code d'un script qui permet d'afficher toutes les images présentes dans un répertoire donné, dans un tableau sous form Problème affichage de la commentaires [ par dyto ] bonjour les zéros, mon probleme c que je fai un tuto, et il y 2 champs, et kon on les remplies, il l'ajoute dans la bdd et l'affiche dans en haut, com probleme de code ou d affichage????????? [ par steph0077 ] voila j ai un leger probleme avec ce script qui ne m affiche pas les donnees comme je le desire..............les langues qui doivent s afficher ne le


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,699 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales