[JS-PHP] Compte à rebours, via heure du serveur

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 : [JS-PHP] Compte à rebours, via heure du serveur

par kevinf » 26 oct. 2007, 21:30

Désolé, du flood, mais je viens de trouver comment mettre le texte et je suis super content, cela veut dire que j'ai enfin un peu compris comment marche le JS.

Merci à tous :P

par kevinf » 26 oct. 2007, 19:17

Ah, juste un truc, comment afficher un texte quand tout est arrivé à 0?

par kevinf » 26 oct. 2007, 19:13

Merci, problème résolu, en fait j'avais un autre programme qui faisait interférence, maintenant tout marche, sauf l'heure, mais suffit de faire un -1.

Merci à vous.

par h0_noMan » 26 oct. 2007, 19:02

Regardes combien vaux tps dans le code source de la page.
Peut etre un soucis avec les fuseaux horaires.

par kevinf » 26 oct. 2007, 18:53

J'obtiens 7h et quelques donc pas bon...

Et les secondes défilent très vite.

par h0_noMan » 26 oct. 2007, 18:51

ParseInt() fonctionne pour les chaines de caractères.
var tps = <?php echo $compteur;?> ; 
Essayes avec Math.floor()

Sinon ton calcul est juste.

par kevinf » 26 oct. 2007, 18:18

Ok, j'ai essayé ca :

Code : Tout sélectionner

h2 = parseInt((tps)/3600) ; m2 = parseInt((tps%3600)/60) ; s2 = parseInt((tps%3600)%60) ;
Evidement ca ne marche toujours pas.
Pourtant, je pensait que c'est bon.

par Ryle » 26 oct. 2007, 18:06

bah voui.. pourquoi que tu me divise le nombre de secondes exprimées en minutes par 24 ?
Et ousque t'as vu un 24 dans mon raisonnement ou dans mon exemple ? :P

Si je te demandes combien il y a d'heures dans 8000 secondes, tu fais quoi comme calcul pour me répondre ? C'est exactement la même chose qu'il te faut faire ici.. (et non, "compter sur tes doigts" n'est pas une réponse autorisée ;))

par kevinf » 26 oct. 2007, 16:53

J'ai essayé en mettant cela :

Code : Tout sélectionner

tps-- ; h2 = parseInt((tps%3600)/24) ; m2 = parseInt((tps%3600)/60) ; s2 = parseInt((tps%3600)%60) ; disp = (h2<10 ? "0"+h2 : h2) + ':' + (m2<10 ? "0"+m2 : m2) + ':' + (s2<10 ? "0"+s2 : s2);
Mais ca ne fonctionne pas.

par Ryle » 26 oct. 2007, 16:35

Ben non.. pas tout à fait comme pour les minutes... dans un temps en secondes, y a pas le même nombre d'heures que de minutes :)

Pour obtenir les heures, il te faut diviser ton temps en secondes par 3600 (arrondi à l'inférieur)
Pour obtenir les minutes restantes, il te faut diviser les secondes restantes par 60 (ce que ton script fait déjà, tps%3600 étant égal au nombre de secondes restantes)
Pour obtenir les secondes, il te suffit de récupérer les secondes restantes du calcul précédent (ce que ton script fait également)

Ex : 14000 secondes représentent
14000 / 3600 = 3.88, soit 3 heures (reste 3200 secondes)
3200 / 60 = 53.33, soit 53 minutes (reste 20 secondes)
et te donne donc le temps : 3" 53' 20

par kevinf » 26 oct. 2007, 16:14

Je dois faire la même chose que pour les minutes?
Si oui, j'ai essayé et ca bug bien. L'heure déconne.

par Ryle » 26 oct. 2007, 16:04

Aaaaaaaaahhhhhhh ..... ces heures là !! :)
(pff moi j'pensais que c'était l'heure sous entendu les minutes/secondes qui n'apparaissaient pas :))

Bon ben c'est normal qu'il ne t'affiche pas les heures, c'est à toi de faire le calcul pour savoir combien il y a d'heure dans ton temps en seconde. Une heure c'est 3600 secondes, donc si tu comptes combien de fois il y a 3600 secondes dans ton tps (avec une simple division), tu auras ton nombre d'heure, à ajouter dans la chaine que tu affiches :)

par kevinf » 26 oct. 2007, 14:41

Oui, ma page contient bien un bloc avec comme id temps, aucune erreur JS, mais quand on regarde le code :
<script type="text/javascript">
<?php
$min=60;
$heure=60*$min;
$journee=24*$heure;
$repere=(time())%86400;
$compteur=86400-$repere; ?>
var tps = <?php echo $compteur;?> ;
var m= 0;
var s=0;
var disp="";
var idtimer2 =setInterval('affichetemps2()',1000);
function affichetemps2(){

tps-- ;
m = parseInt((tps%3600)/60) ;
s = parseInt((tps%3600)%60) ;
disp = (m<10 ? "0"+m : m) + ':' + (s<10 ? "0"+s : s) ;

<?php if ($_GET['mode'] == 'eurocarottes') {echo "document.getElementById('temps').innerHTML= disp;";}?>

if ((s == 0 && m ==0)) {
clearInterval(idtimer2);
url="http://www.site.com/site/index.php?page ... eponse=nok"
Go2(url)
}
}
function Go2(url) {
setTimeout("window.location=url", 500)
}

</script>
on voit que la partie en rouge calcul le temps en minutes et secondes, et pas en heure, ce qui fait le bug, mais je ne sait pas comment corriger ce soucis.

Merci de votre aide.

par Ryle » 26 oct. 2007, 14:34

Bah difficile sans plus d'infos...

Y a-t-il des erreurs js ?
As-tu vérifié dans le source de ta page la valeur de tps ?
ta page contient elle bien un bloc dont l'id est 'temps' ?

Tu peux utiliser la fonction alert() pour contrôler des valeurs ou voir quelle portion du code est exécutée (je te recommande dans ce cas un interval plus grand pour pas être submergé de message d'alertes)

par kevinf » 26 oct. 2007, 14:13

Personne peut m'aider?