Rechercher : dans
Par :

Compteur évoluant de page en page ?

Dernière réponse le 3 sep 2008 à 18:25:20 chrbar, le 25 aoû 2008 à 16:46:00 
 Signaler ce message aux modérateurs

Salut,

J'aimerais reproduire l'effet du compteur présent en haut de la page http://www.ensembleverslavenir.ca/fr/accueil/

Le code pour le calcul est simple (voir ci-dessous), mais il doit y avoir un système de cookies (et/ou une fonction ASP) qui permet de faire continuer le compteur de page en page (idem si on effectue un rafraîchissement de la page).

Un ID doit se créer à chaque fois que le navigateur ouvre une session sur le site.
Le compteur repart à zéro lorsque le navigateur quitte le site.

Auriez-vous une idée de comment re-coder le même système mais en PHP?
Merci beaucoup :)
Chris


<div class="counter"><span id="counter">8.15</span> tonnes</strong> de gaz à effet de serre ont été émis au Québec depuis le début de votre visite.</div>

<script language="JavaScript" type="text/javascript">
var sTotal = 0;
function gazCount(){
sTotal=sTotal+(0.1);
document.getElementById("counter").innerHTML = r2(sTotal*2.91);
//document.getElementById("counter").innerHTML = r2(sTotal);
setTimeout("gazCount();", 100);
}
function r2(n){
ans = n * 1000
ans = Math.round(ans /10) + ""
while (ans.length < 3) {ans = "0" + ans}
len = ans.length
ans = ans.substring(0,len-2) + "." + ans.substring(len-2,len)
return ans
}
gazCount();
</script>

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « Compteur évoluant de page en page ? » dans :
Supprimer son compte Facebook VoirVous souhaitez supprimer votre compte Facebook définitivement, alors rendez-vous sur cette page. Entrez l'adresse mail associée à votre compte Facebook, puis cliquez sur Envoyer. Votre demande de suppression est faite, consultez...
Impossible d'accéder ou de se connecter à Hotmail - Page blanche VoirSi l'accès à votre compte Hotmail aboutit à une page vide, veuillez suivre les étapes suivantes : 1. Vérifier le mot de passe utilisé, ainsi que l'identifiant (login) Vérifier en particulier que l'identifiant est bien saisi sous forme d'une adresse...
IGoogle - Créer sa page d'accueil en 30 secondes VoirPour accéder au portail personnalisable de Google, cliquez sur le lien « iGoogle » situé dans le coin supérieur droit de la page d’accueil du moteur de recherche. L’interface du portail iGoogle apparaît aussitôt : Étant donné que vous...

1

Tiller, le 26 aoû 2008 à 09:38:53

C'est pas propre mais sa marche..

Et juste pour info, c'est une connerie ce compteur.
Une fois la page chargée, la serveur ne travaille plus "pour toi"

<script language="JavaScript" type="text/javascript">
var sTotal = 0;
if (lire_cookie('compteur'))
    sTotal = parseFloat(lire_cookie('compteur'));

function gazCount(start){
sTotal=sTotal+(0.1);
document.getElementById("counter").innerHTML = r2(sTotal*2.91);
document.cookie="compteur=" + sTotal;
setTimeout("gazCount();", 100);
}
function r2(n){
ans = n * 1000
ans = Math.round(ans /10) + ""
while (ans.length < 3) {ans = "0" + ans}
len = ans.length
ans = ans.substring(0,len-2) + "." + ans.substring(len-2,len)
return ans
}
function lire_cookie(nom) {
  var arg=nom+"=";
  var alen=arg.length;
  var clen=document.cookie.length;
  var i=0;
  while (i<clen){
    var j=i+alen;
    if (document.cookie.substring(i, j)==arg)
       return arguments_cookies(j);
    i=document.cookie.indexOf(" ",i)+1;
    if (i==0) break;
  }
  return false; 
}
function arguments_cookies(offset){
  var endstr=document.cookie.indexOf (";", offset);
  if (endstr==-1) endstr=document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr)); 
}


setTimeout('gazCount()', 100);
</script>

On dit que les oiseaux sont libres dans le ciel,
Mais la vraie liberté n'est pas celle d'avoir un endroit
où se poser ?

Répondre à Tiller

2

chrbar, le 3 sep 2008 à 16:59:59

Merci Tiller :)
Cela fonctionne très bien sous IE6, Firefox, Safari et Opera, mais il y a une erreur sous IE7!

Sous IE7, cela fonctionne correctement quand on ouvre une nouvelle page et que l'on passe d'une page à une autre, mais cela arrête de fonctionner quand on ouvre la page dans un nouvel onglet ou dans une nouvelle page via le bouton de droite de la souris sur un lien, le compteur n'apparaît pas!

Cela peut venir d'un conflit avec les autres scripts présent dans la page?
J'ai activé les débogages de scripts dans IE, et j'obtiens cette erreur:

A Runtime Error has occurred.
Do you wish to Debug?
Line: 243
Error: 'document.getElementById(...)' is null or not an object.

La ligne concernée est:
document.getElementById("counter").innerHTML = r2(sTotal*2.91);

Serais-tu comment corriger ce problème?
Merci beaucoup :)
Chris

Répondre à chrbar

3

 Tiller, le 3 sep 2008 à 18:25:20

<script language="JavaScript" type="text/javascript">
var sTotal = 0;
if (lire_cookie('compteur'))
    sTotal = parseFloat(lire_cookie('compteur'));

function gazCount(start){
sTotal=sTotal+(0.1);
document.getElementById("counter").innerHTML = r2(sTotal*2.91);
document.cookie="compteur=" + sTotal;
setTimeout("gazCount();", 100);
}
function r2(n){
ans = n * 1000
ans = Math.round(ans /10) + ""
while (ans.length < 3) {ans = "0" + ans}
len = ans.length
ans = ans.substring(0,len-2) + "." + ans.substring(len-2,len)
return ans
}
function lire_cookie(nom) {
  var arg=nom+"=";
  var alen=arg.length;
  var clen=document.cookie.length;
  var i=0;
  while (i<clen){
    var j=i+alen;
    if (document.cookie.substring(i, j)==arg)
       return arguments_cookies(j);
    i=document.cookie.indexOf(" ",i)+1;
    if (i==0) break;
  }
  return false; 
}
function arguments_cookies(offset){
  var endstr=document.cookie.indexOf (";", offset);
  if (endstr==-1) endstr=document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr)); 
}


window.onload = gazCount;
</script>


Essaie ça.

Evite les PMs la prochaines fois ;o
On dit que les oiseaux sont libres dans le ciel,
Mais la vraie liberté n'est pas celle d'avoir un endroit
où se poser ?

Répondre à Tiller
Collection CommentÇaMarche.net