Compteur de clics sans reset (avec php)

Résolu

Bonjour,

je souhaiterais, sur mon site, que les personnes intéressées par un projet se comptent en cliquant sur un bouton.

J'ai trouvé le script en html/java, mais le compteur se remet à zéro quand on quitte la page.

J'ai compris qu'il fallait que j'utilise php pour garder le nombre affiché, mais je ne maitrise pas du tout (bidouilleur, mais pas champion champion).

Quelqu'un pourrait-il m'expliquer (simplement) comment faire? Avec des exemples de scripts, tant qu'à faire.

Je demande beaucoup, je sais, mais j'apprends vite...

Très cordialement,

18 réponses

Résumé de la discussion

Le souci porte sur un compteur de clics qui se réinitialise dès que l’utilisateur quitte la page et qui nécessite de stocker le nombre côté serveur avec PHP. Plusieurs solutions évoquées préconisent d’exécuter du PHP en renommant le fichier en index.php et d’utiliser un fichier compteur pour lire et écrire la valeur du compteur. D’autres éléments suggèrent d’employer file_get_contents sur le fichier de données, de vérifier le chemin './clickcount.data' ou 'compteur/clickcount.data', et d’éviter les symboles @ pour diagnostiquer les erreurs. En cas de persistance, le script affiche alors le nombre accumulé et peut s’intégrer à une image ou un bouton via une fonction côté client, tout en garantissant que les données évoluent correctement.

Bobot (l’IA à votre service)
  1. C'est encore moi. Je viens de voir qu'il fallait peut-etre que j'utilise Ajax. Mais à part Sophocle, Ajax...

    1. Modérateur

      Bonjour,

      Alors oui, il va te falloir du javascript, de l'ajax, et un langage serveur (tel que le php).

      Ensuite, la première question à se poser est : où veux tu conserver les données de ce compteur ? une base de donnée ou un simple fichier ?

      Si base de données, il te faudra aussi apprendre le SQL pour pouvoir faire des requêtes INSERT ou UPDATE

      Voici des exemples de scripts  Javascript (jquery) Ajax : https://codes-sources.commentcamarche.net/source/102253-exemple-ajax-en-jquery

      Tu en trouveras certainement des plus simples un peu partout sur le net .. 

      Reviens nous voir avec tes tentatives si tu rencontres un souci .. on verra pour t'aider à le corriger


      1. Merci beaucoup. J'ai déjà touvé un exemple sur un autre site, avec php et tout. Le compteur s'affiche mais se s'incrémente pas. Je vais regarder ton lien et je suis sur que je vais finir par mettre les bouts ensemble. À bientot. Merci encore.

        1. Bonjour,

          voici des fichiers que j'ai trouvés pour mon compteur. D'après ce que je comprends, les données sont enregistrées sur des fichier (PHP5 et clickcount.data) et non sur une base de données. C'est bien ça?

          1) Index

          <?xml version="1.0" encoding="iso-8859-15"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
          <html>
          <head>
          <title>AJAX : Exemple de client</title>
          <script type="text/javascript" src=""></script>
          </head>
          <body>
          <p>
          <a href="" onclick="gestionClic(); return false;">Cliquez ici !</a>
          (Nombre de clics : <span id="nbr_clics">
          <?php
              $str = @file_get_contents('compteur/clickcount.data');
              if($str !== FALSE)
                  echo unserialize($str);
              else
                  echo 0;
          ?></span>)
          </p>
          </body>
          </html>

          2) /compteur/clickcount.data
           

          0

          3) /compteur/compteur.php5

          <?php
              sleep(1);
              
              $nbr = 1;
              
              $str = @file_get_contents('clickcount.data');
              if($str !== FALSE)
                  $nbr = unserialize($str)+1;
              
              header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
              header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
              header("Cache-Control: no-store, no-cache, must-revalidate");
              header("Cache-Control: post-check=0, pre-check=0", false);
              header("Pragma: no-cache");
              
              echo $nbr;
              
              file_put_contents('clickcount.data', serialize($nbr));
          ?>
          

          4) /js/compteur-click.js

          var http; // Notre objet XMLHttpRequest
          
          function createRequestObject()
          {
              var http;
              if(window.XMLHttpRequest)
              { // Mozilla, Safari, ...
                  http = new XMLHttpRequest();
              }
              else if(window.ActiveXObject)
              { // Internet Explorer
                  http = new ActiveXObject("Microsoft.XMLHTTP");
              }
              return http;
          }
          
          function gestionClic()
          {
              document.getElementById('nbr_clics').innerHTML = '<em>Chargement...</em>';
              http = createRequestObject();
              http.open('get', '.compteur/compteur.php5', true);
              http.onreadystatechange = handleAJAXReturn;
              http.send(null);
          }
          
          function handleAJAXReturn()
          {
              if(http.readyState == 4)
              {
                  if(http.status == 200)
                  {
                      document.getElementById('nbr_clics').innerHTML = http.responseText;
                  }
                  else
                  {
                      document.getElementById('nbr_clics').innerHTML = "<strong>N/A</strong>";
                  }
              }
          }

          J'ai plusieurs problèmes:
          bien que les fichiers PHP5 et clickcount.data s'incrémentent, le résultat est N/A.
          J'ai bien vu la phrase de code sur le fichier compteur-click.js

          Extraits:
          (...)
           

          function handleAJAXReturn()
          {
              if(http.readyState == 4)
              {
                  if(http.status == 200)
                  {
                      document.getElementById('nbr_clics').innerHTML = http.responseText;
                  }
                  else
                  {
                      document.getElementById('nbr_clics').innerHTML = "<strong>N/A</strong>";
                  }
              }
          

          (...)
          je ne sais pas ce qui cloche et ce que je dois changer.

          Par ailleurs, j'ai voulu, avec Kompozer, modifier le texte, la casse des caractères etc sur la page principale (index), et tout a disparu. Ce qui est un problème car, bien évidemment, je souhaite insérer ce compteur dans un coin de la page principale avec un texte qui l'annonce et qui l'accompagne.

          Également, en actualisant index, avec fileZilla, il semble que l'incrémentation ne continue pas celle du jour précédent, ce qui est, pour le coup un gros gros problème, car je souhaite modifier régulièrement la page principale (index) et garder l'incrémentation.

          Voilà où j'en suis. Ça avance...

          Si c'est utile, l'adresse est
          http://letaucestnous.lescigales.org

          1. Bonjour,

            voici des fichiers que j'ai trouvés pour mon compteur. D'après ce que je comprends, les données sont enregistrées sur des fichier (PHP5 et clickcount.data) et non sur une base de données. C'est bien ça?

            1) Index

            <?xml version="1.0" encoding="iso-8859-15"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
             "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
            <html>
            <head>
            <title>AJAX : Exemple de client</title>
            <script type="text/javascript" src="""></script>
            </head>
            <body>
            <p>
            <a href="" onclick="gestionClic(); return false;">Cliquez ici !</a>
            (Nombre de clics : <span id="nbr_clics">
            <?php
                $str = @file_get_contents('compteur/clickcount.data');
                if($str !== FALSE)
                    echo unserialize($str);
                else
                    echo 0;
            ?></span>)
            </p>
            </body>
            </html>
            

            2) /compteur/clickcount.data

            0
            1. 3) /compteur/compteur.php5

              <?php
                  sleep(1);
                  
                  $nbr = 1;
                  
                  $str = @file_get_contents('clickcount.data');
                  if($str !== FALSE)
                      $nbr = unserialize($str)+1;
                  
                  header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
                  header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
                  header("Cache-Control: no-store, no-cache, must-revalidate");
                  header("Cache-Control: post-check=0, pre-check=0", false);
                  header("Pragma: no-cache");
                  
                  echo $nbr;
                  
                  file_put_contents('clickcount.data', serialize($nbr));
              ?>

              4) /js/compteur-click.js

              var http; // Notre objet XMLHttpRequest
              
              function createRequestObject()
              {
                  var http;
                  if(window.XMLHttpRequest)
                  { // Mozilla, Safari, ...
                      http = new XMLHttpRequest();
                  }
                  else if(window.ActiveXObject)
                  { // Internet Explorer
                      http = new ActiveXObject("Microsoft.XMLHTTP");
                  }
                  return http;
              }
              
              function gestionClic()
              {
                  document.getElementById('nbr_clics').innerHTML = '<em>Chargement...</em>';
                  http = createRequestObject();
                  http.open('get', '.compteur/compteur.php5', true);
                  http.onreadystatechange = handleAJAXReturn;
                  http.send(null);
              }
              
              function handleAJAXReturn()
              {
                  if(http.readyState == 4)
                  {
                      if(http.status == 200)
                      {
                          document.getElementById('nbr_clics').innerHTML = http.responseText;
                      }
                      else
                      {
                          document.getElementById('nbr_clics').innerHTML = "<strong>N/A</strong>";
                      }
                  }
              }
              1. J'ai plusieurs problèmes:
                bien que les fichiers PHP5 et clickcount.data s'incrémentent, le résultat est N/A.
                J'ai bien vu la phrase de code sur le fichier compteur-click.js

                Extraits:
                (...)

                function handleAJAXReturn()
                {
                    if(http.readyState == 4)
                    {
                        if(http.status == 200)
                        {
                            document.getElementById('nbr_clics').innerHTML = http.responseText;
                        }
                        else
                        {
                            document.getElementById('nbr_clics').innerHTML = "<strong>N/A</strong>";
                        }
                    }
                (...)

                (...)
                je ne sais pas ce qui cloche et ce que je dois changer.

                Par ailleurs, j'ai voulu, avec Kompozer, modifier le texte, la casse des caractères etc sur la page principale (index), et tout a disparu. Ce qui est un problème car, bien évidemment, je souhaite insérer ce compteur dans un coin de la page principale avec un texte qui l'annonce et qui l'accompagne.

                Également, en actualisant index, avec fileZilla, il semble que l'incrémentation ne continue pas celle du jour précédent, ce qui est, pour le coup un gros gros problème, car je souhaite modifier régulièrement la page principale (index) et garder l'incrémentation.

                Voilà où j'en suis. Ça avance... (je l'ai fais en plusieurs messages car en entier cela ne passait pas)

                1. Modérateur

                  Commence par renommer ton fichier  compteur.php5 en compteur.php

                  Ensuite,  remplace ton code JS par celui ci

                  var http; // Notre objet XMLHttpRequest
                  var urlAjax = './compteur/compteur.php';
                  
                  function createRequestObject()
                  {
                    if(window.XMLHttpRequest) { // Mozilla, Safari, ...
                      http = new XMLHttpRequest();
                    } else if(window.ActiveXObject){ // Internet Explorer
                      http = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    return http;
                  }
                  
                  function gestionClic()
                  {
                    document.getElementById('nbr_clics').innerHTML = '<em>Chargement...</em>';
                    http = createRequestObject();
                    http.open('get', urlAjax, true);
                    http.onreadystatechange = handleAJAXReturn;
                    // Error Handling:
                    http.onerror = function(error){
                      console.error( 'Erreur AJAX', error );
                    } 
                    http.send(null);
                  }
                  
                  function handleAJAXReturn()
                  {
                    if(http.readyState == 4) {
                      if(http.status == 200){
                        document.getElementById('nbr_clics').innerHTML = http.responseText;
                      } else {
                        document.getElementById('nbr_clics').innerHTML = "<strong>N/A</strong>";
                        console.error( 'Erreur AJAX', http.status, http.responseText );
                      }
                    }
                  }
                  
                  

                  Et pense à regarder dans la console de ton navigateur ce qui s'affiche lorsque tu clic sur ton bouton..

                  1. Formidable! Ça marche! Et ça va rester meme si je modifie l'index? Pour le reste je vais faire des tests, et si tu as quelques idées... Merci beaucoup!

                    1. Modérateur

                      ça restera tant que tu gardes le fichier généré par le script.

                      quand au "reste" . je ne sais pas de quoi tu parles...

                      Mais de toutes façons, il faudra créer une nouvelle discussion propre à chaque question/problème.

                      et pense à marquer celui ci en résolu.

                  2. Le problème qui me reste est la modification du format (taille du texte, éventuellement du bouton ect) pour insérer ce compteur dans un coin de la page principale avec un texte qui l'annonce et qui l'accompagne. Avec Kompozer, j'ai changé le texte et tout a disparu en ligne. Bizarre...

                    1. Je viens de retourner sur le site et le nombre de clics n'est pas affiché. Il ne s'affiche que si je clique sur le bouton (avec +1). C'est ennuyeux car je souhaiterais que le nombre (de participants) soit toujours affiché. C'est important.

                      1. Modérateur

                        modifie la ligne de code

                         $str = @file_get_contents('compteur/clickcount.data');

                        par

                         $str = file_get_contents('./compteur/clickcount.data');
                    2. La phrase est

                      $str = @file_get_contents('clickcount.data');

                      (sans compteur/) que j'ai remplacée par

                      $str = file_get_contents('./clickcount.data');

                      (sans @) mais ça n'a rien changé

                      1. Par ailleurs, j'ai trouvé ce bout de code qui pourrait remédier à l'affichage permanent du nombre de clics

                        <body onload="gestionClic(nbr_clics);">
                        <!-- ...... -->

                        mais il faudrait l'adapter (?) et je ne sais pas où il faudrait l'insérer...

                      2. @letocest

                        Hello,

                        en ce qui concerne le positionement du compteur dans la page, c'est résolu. Il me reste le problème de la permanence du nombre de participants...

                    3. Modérateur

                      Tu es sûr du chemin ?

                      Peux tu modifier le code comme ceci

                      <?php
                      
                      $cmptFile =  __DIR__ . '/clickcount.data';
                      if(!file_exists($cmptFile)){
                        echo "Erreur .. Fichier " . $cmptFile . "manquant ou introuvable...";
                      } else {
                      
                        $str = file_get_contents($cmptFile); 
                        var_dump($str); // le temps des tests pour voir ce que contient ta variable 
                         
                        if($str !== FALSE) {
                          echo unserialize($str);
                        } else {
                          echo 0;
                        }
                      }
                      ?>
                      1. Je ne suis sur de rien du tout (chemin?) J'ai remplacé le php par ton code, le résultat est plutôt curieux... (voir l'image)

                      2. Je ne suis sur de rien (chemin?) J'ai remplacé le php par ton code, le résultat est plutot curieux, et il disparait quand on recharge la page.

                        Cela donne:

                        Nous sommes: string(5) "i:13;" 13

                        (l'italique, c'est moi)

                      3. Modérateur
                        @letocest

                        Donc il trouve bien le fichier et parvient à en extraire le nombre de clics..

                        Par contre, si il disparaît (ce qui n'est pas normal...) C'est que tu essayé de mettre ton appel au script js dans le onload du body..(ce qu'il ne fallait pas faire...)

                      4. @jordane45

                        J'ai remis le php d'avant qui marchait très bien (Nous sommes: 14), mais qui disparait à chaque chargement de la page.

                        Par contre, je ne comprends pas trop ta remarque. Je n'essaie pas grand chose, je ne fais que piquer des bouts de code ça et là... Je n'ai pas inséré le bout de code

                        <body onload="gestionClic(nbr_clics);">
                        <!-- ...... -->

                        car je ne saurais pas où le mettre.

                      5. Modérateur
                        @letocest

                        Il faut que tu nous remontre l'intégralité de ton code à l'état actuel.

                        N'oublie pas de préciser le nom de chaque fichier et son emplacement sur ton site.

                    4. Merci de ta réponse. En fait, les fichiers ne sont pas très différents que les premiers que j'ai montrés (avec tes modifs).

                      Il y a 4 fichiers (je vais peut-etre les mettre en plusieurs fois);

                      1) index.html

                      2) /compteur/compteur.php

                      3) /compteur/clickcount.data

                      4) /js/compteur-click.js

                      et d'abord...

                      1) index.html (le passage du compteur)

                      (...)

                      </div>
                      <div>&nbsp;
                      <script type="text/javascript" src=""></script>
                      <p style="text-align: center;"><a href="" onclick="gestionClic(); return false"><img style="border: medium none ;" src=""></a> <br>
                      </p>
                      <p style="text-align: center;"><big><big>(Nous sommes : <span id="nbr_clics">
                      <?php $str = @file_get_contents('compteur/clickcount.data');
                      
                          if($str !== FALSE)
                      
                              echo unserialize($str);
                      
                          else
                      
                              echo 0;
                      
                      ?></span>)

                      (...) c'est bizarre l'adresse de la source src (une image) a disparu du code ici.

                      2) /compteur/compteur.php

                      <?php
                      
                          sleep(1);
                      
                          
                      
                          $nbr = 1;
                      
                          
                      
                          //$str = @file_get_contents('clickcount.data');
                      
                          $str = file_get_contents('./clickcount.data');
                      
                          if($str !== FALSE)
                      
                              $nbr = unserialize($str)+1;
                      
                          
                      
                          header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
                      
                          header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
                      
                          header("Cache-Control: no-store, no-cache, must-revalidate");
                      
                          header("Cache-Control: post-check=0, pre-check=0", false);
                      
                          header("Pragma: no-cache");
                      
                          
                      
                          echo $nbr;
                      
                          
                      
                          //file_put_contents('clickcount.data', serialize($nbr));
                      
                          file_put_contents('./clickcount.data', serialize($nbr));
                      
                      ?>
                      1. 3) /compteur/clickcount.data

                        0

                        4) /js/compteur-click.js

                        var http; // Notre objet XMLHttpRequest
                        
                        var urlAjax = './compteur/compteur.php';
                        
                        
                        
                        function createRequestObject()
                        
                        {
                        
                          if(window.XMLHttpRequest) { // Mozilla, Safari, ...
                        
                            http = new XMLHttpRequest();
                        
                          } else if(window.ActiveXObject){ // Internet Explorer
                        
                            http = new ActiveXObject("Microsoft.XMLHTTP");
                        
                          }
                        
                          return http;
                        
                        }
                        
                        
                        
                        function gestionClic()
                        
                        {
                        
                          document.getElementById('nbr_clics').innerHTML = '<em>Chargement...</em>';
                        
                          http = createRequestObject();
                        
                          http.open('get', urlAjax, true);
                        
                          http.onreadystatechange = handleAJAXReturn;
                        
                          // Error Handling:
                        
                          http.onerror = function(error){
                        
                            console.error( 'Erreur AJAX', error );
                        
                          } 
                        
                          http.send(null);
                        
                        }
                        
                        
                        
                        function handleAJAXReturn()
                        
                        {
                        
                          if(http.readyState == 4) {
                        
                            if(http.status == 200){
                        
                              document.getElementById('nbr_clics').innerHTML = http.responseText;
                        
                            } else {
                        
                              document.getElementById('nbr_clics').innerHTML = "<strong>N/A</strong>";
                        
                              console.error( 'Erreur AJAX', http.status, http.responseText );
                        
                            }
                        
                          }
                        
                        }

                        Le compteur marche très bien, s'incrémente et tout. Le seul problème (ennuyeux) c'est qu'il disparait à chaque chargement de la page.

                    5. Modérateur

                      Ton fichier se nomme index.html  ?

                      C'est étonnant ... il est rare que le paramétrage du serveur permette l'exécution de code PHP dans un fichier .html.

                      Renomme le en index.php .. ça devrait mieux marcher.

                      Si ça ne marche toujours pas mieux,  poste nous le code COMPLET de ton fichier index.php  ainsi que le code source généré de celui ci. ( pour avoir le code source généré, il faut afficher la page dans ton navigateur puis utiliser le raccourci clavier CTRL+u   le copier et nous le coller ici )


                      1. Ça ne marche plus... Je suis perdu dans tous mes fichiers. Je les ai tous essayés et en ayant (je crois) remis ceux d'hier, quand je clique sur l'image du compteur, la page remonte en haut.

                        Je n'arrive pas à mettre le lien du site mais en faisant malin malin:

                        letaucestnous point lescigales point org (pour l'instant avec index.html puisque ça marchait) pour que tu vois par toi-meme si c'est possible

                        1. J'ai remis le compteur de base sans formatage et ça marche, sauf la permanence du comptage. Je vais reformater doucement et je devrais revenir où j'en étais, c'est-à-dire revenir au problème de la permanence...

                      2. Je viens de me rendre compte que c'est le bazar dans les messages, car j'écrivais des messages qui n'apparaissaient pas, mais qui en fait sont apparus plus tard. Et comme j'ai essayé plusieurs fois.... En ce qui concerne html ou php, le compteur marche pour les deux mais l'encodage de la page pour php est un peu tordu. Je veux bien mettre la page entière de l'index et son code source, je ne savais pas qu'ils différaient.

                        Par ailleurs, j'ai essayé de remettre une image à la place de "cliquer ici", j'y avais réussi et je n'y arrive plus (lecompteur ne marche plus - il fonctionnait pourtant, ce doit etre la chance du débutant).

                        Donc, recommençons:

                        1) index.html

                        <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
                        <html><head>
                         
                          <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
                          <title>Index maquette</title>
                        
                         
                        </head><body style="width: 94px;">
                        <div style="position: absolute; left: 36px; top: 356px; height: 68px; width: 587px;"><big><big style="font-weight: bold;">Calque 1 Qu'est-ce que c'est?</big></big><br>
                        </div>
                        
                        <div style="position: absolute; left: 228px; top: 303px; height: 46px; width: 137px; z-index: 1;"><big>Calque
                        4</big><br>
                        </div>
                        
                        <div style="position: absolute; left: 744px; top: 362px;"><big><big style="font-weight: bold;">Calque 2 Des articles</big></big><br>
                        </div>
                        
                        <div style="position: absolute; left: 644px; top: 275px; height: 51px; width: 185px;"><big>&nbsp;&nbsp;
                        <big style="font-weight: bold;">Calque 7</big></big><br>
                        </div>
                        
                        <div style="position: absolute; left: 374px; top: 7px;"><big>&nbsp; <img style="width: 250px; height: 250px;" alt="" src=""></big><br>
                        </div>
                        
                        <big>&nbsp;&nbsp; <br>
                        </big>
                        <div style="position: absolute; left: 115px; top: 113px;"><big style="font-weight: bold; font-family: Curlz MT;"><big><big>Site
                        plutôt en construction....</big></big></big><br>
                        </div>
                        
                        <big><br>
                        </big>
                        <div style="position: absolute; left: 552px; top: 504px; height: 262px; width: 318px;">
                        <div style="text-align: center;"><big>&nbsp;&nbsp; <big style="font-weight: bold;">Comptons-nous!</big></big><br>
                        <big><big style="font-weight: bold;">Si vous souhaitez signifier votre
                        participation à <span style="font-style: italic;"><br>
                        l'étau c'est nous</span>, </big></big><br>
                        </div>
                        <div>&nbsp;
                        <script type="text/javascript" src=""></script>
                        </head>
                        <body>
                        <p>
                        <a href="" onclick="gestionClic(); return false;">Cliquez ici !</a>
                        (Nous sommes : <span id="nbr_clics">
                        <?php
                            $str = @file_get_contents('compteur/clickcount.data');
                            if($str !== FALSE)
                                echo unserialize($str);
                            else
                                echo 0;
                        ?></span>)
                        </big></big></p>
                        ;</div>
                        <br>
                        </div>
                        
                        <div style="position: absolute; left: 417px; top: 309px;"><big>&nbsp;&nbsp;
                        Calque 6</big><br>
                        </div>
                        
                        <div style="position: absolute; left: 56px; top: 315px; width: 135px; text-align: center;"><big><big>&nbsp;Calque
                        5</big></big><br>
                        </div>
                        
                        <div style="position: absolute; left: 746px; top: 423px;"><big><big>Calque
                        3 Des sites</big></big><br>
                        </div>
                        
                        </body></html>

                        2) code source index.html

                        <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
                        <html><head>
                         
                          <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
                          <title>Index maquette</title>
                        
                         
                        </head><body style="width: 94px;">
                        <div style="position: absolute; left: 36px; top: 356px; height: 68px; width: 587px;"><big><big style="font-weight: bold;">Calque 1 Qu'est-ce que c'est?</big></big><br>
                        </div>
                        
                        <div style="position: absolute; left: 228px; top: 303px; height: 46px; width: 137px; z-index: 1;"><big>Calque
                        4</big><br>
                        </div>
                        
                        <div style="position: absolute; left: 744px; top: 362px;"><big><big style="font-weight: bold;">Calque 2 Des articles</big></big><br>
                        </div>
                        
                        <div style="position: absolute; left: 644px; top: 275px; height: 51px; width: 185px;"><big>&nbsp;&nbsp;
                        <big style="font-weight: bold;">Calque 7</big></big><br>
                        </div>
                        
                        <div style="position: absolute; left: 374px; top: 7px;"><big>&nbsp; <img style="width: 250px; height: 250px;" alt="" src=""></big><br>
                        </div>
                        
                        <big>&nbsp;&nbsp; <br>
                        </big>
                        <div style="position: absolute; left: 115px; top: 113px;"><big style="font-weight: bold; font-family: Curlz MT;"><big><big>Site
                        plutôt en construction....</big></big></big><br>
                        </div>
                        
                        <big><br>
                        </big>
                        <div style="position: absolute; left: 552px; top: 504px; height: 262px; width: 318px;">
                        <div style="text-align: center;"><big>&nbsp;&nbsp; <big style="font-weight: bold;">Comptons-nous!</big></big><br>
                        <big><big style="font-weight: bold;">Si vous souhaitez signifier votre
                        participation à <span style="font-style: italic;"><br>
                        l'étau c'est nous</span>, </big></big><br>
                        </div>
                        <div>&nbsp;
                        <script type="text/javascript" src=""></script>
                        </head>
                        <body>
                        <p>
                        <a href="" onclick="gestionClic(); return false;">Cliquez ici !</a>
                        (Nous sommes : <span id="nbr_clics">
                        <?php
                            $str = @file_get_contents('compteur/clickcount.data');
                            if($str !== FALSE)
                                echo unserialize($str);
                            else
                                echo 0;
                        ?></span>)
                        </big></big></p>
                        ;</div>
                        <br>
                        </div>
                        
                        <div style="position: absolute; left: 417px; top: 309px;"><big>&nbsp;&nbsp;
                        Calque 6</big><br>
                        </div>
                        
                        <div style="position: absolute; left: 56px; top: 315px; width: 135px; text-align: center;"><big><big>&nbsp;Calque
                        5</big></big><br>
                        </div>
                        
                        <div style="position: absolute; left: 746px; top: 423px;"><big><big>Calque
                        3 Des sites</big></big><br>
                        </div>
                        
                        </body></html>

                        Tout ceci est bien compliqué, désolé.

                        À bientôt,

                        1. Modérateur

                          Oulaaa...

                          Pour commencer .. tu as plusieurs balises <head> </head> dans ton code ...  ce n'est pas possible !

                          Et dans les balises <head> .. tu ne dois pas avoir de code html ...  juste les balises meta, le title de ta page et éventuellement le chargement de tes scripts JS

                          Script JS, d'ailleurs.. qui n'est pas chargé puisque sa balise src est vide !

                        2. @jordane45

                          Merci. Pour le head, il y en a un en trop. Mais pour le script, la balise est peut-etre vide, mais ça marche... Que me conseille-tu?

                      3. Modérateur

                        Je confirme .. le fait que ton fichier soit index.html et non .php .. le code php n'est pas interprété ....

                        C'est pour ça que le compteur ne s'affiche pas.

                        Peux tu, en plus de ton index.html .. créer dans le même dossier un fichier index.php et me prévenir lorsque ça sera fait ?

                        Il faudra aller voir sur l'url : https://letaucestnous.lescigales.org/index.php  si ça marche.

                        Si vraiment tu ne peux pas modifier ton fichier en .php ... dans ce cas tu n'auras pas d'autres choix que de faire un ajax pour aller lire l'information et l'afficher dans ta page. ( tu pourras fortement te baser sur le script que tu as utiliser pour incrémenter le nombre de clics .. )

                        Dans ton js, faire une fonction getclic

                        var http; // Notre objet XMLHttpRequest
                        
                        var urlAjax = './compteur/compteur.php';
                        var urlAjax2 = './compteur/compteur2.php';
                        
                        
                        
                        function createRequestObject()
                        
                        {
                        
                          if(window.XMLHttpRequest) { // Mozilla, Safari, ...
                        
                            http = new XMLHttpRequest();
                        
                          } else if(window.ActiveXObject){ // Internet Explorer
                        
                            http = new ActiveXObject("Microsoft.XMLHTTP");
                        
                          }
                        
                          return http;
                        
                        }
                        
                        
                        
                        function gestionClic()
                        {
                          document.getElementById('nbr_clics').innerHTML = '<em>Chargement...</em>';
                          http = createRequestObject();
                          http.open('get', urlAjax, true);
                          http.onreadystatechange = handleAJAXReturn;
                          // Error Handling:
                          http.onerror = function(error){
                            console.error( 'Erreur AJAX', error );
                          } 
                          http.send(null);
                        
                        }
                        
                        function getClic()
                        {
                          document.getElementById('nbr_clics').innerHTML = '<em>Chargement...</em>';
                          http = createRequestObject();
                          http.open('get', urlAjax2, true);
                          http.onreadystatechange = handleAJAXReturn;
                          // Error Handling:
                        
                          http.onerror = function(error){
                            console.error( 'Erreur AJAX', error );
                          } 
                          http.send(null);
                        }
                        
                        function handleAJAXReturn()
                        {
                          if(http.readyState == 4) {
                            if(http.status == 200){
                              document.getElementById('nbr_clics').innerHTML = http.responseText;
                            } else {
                              document.getElementById('nbr_clics').innerHTML = "<strong>N/A</strong>";
                              console.error( 'Erreur AJAX', http.status, http.responseText );
                            }
                          }
                        }

                        Et créer un second fichier php

                        <?php
                        // './compteur/compteur2.php';
                        sleep(1);
                        
                        $nbr = 0;
                        
                        //$str = @file_get_contents('clickcount.data');
                        $str = file_get_contents('./clickcount.data');
                        if($str !== FALSE) {
                           $nbr = unserialize($str);
                        }
                        header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
                        header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
                        header("Cache-Control: no-store, no-cache, must-revalidate");
                        header("Cache-Control: post-check=0, pre-check=0", false);
                        header("Pragma: no-cache");
                        
                        echo $nbr;
                        
                        ?>

                        Et dans ton fichier index.html,  faire appel à la fonction getClic lorsque la page a fini de charger

                        document.addEventListener("DOMContentLoaded", function() {
                          getClic(); // on fait appel à la fonction getClic une fois que la page est chargée
                        });
                        1. Victoire! avec index.php, le résultat reste sur la page.  L'encodage est bizarre. Ça fait comment chez toi? J'ai mis western iso 8854 etc et ça s'affiche correctement.

                        2. @letocest

                          Tu vas dire que jexagère, mais comment je fais pour mettre une image plutot que "cliquez ici?" J'avais réussi mais ça ne passe plus... C'est ma dernière question je le jure.

                          C'est un peu ennuyeux cette histoire de codage de la page. J'ai ouvert un nouvel onglet pour afficher à nouveau le site, et les signes cabalistiques au lieu des lettres accentuées ont réapparus...

                        3. Modérateur
                          @letocest

                          Pour l'encodage, il faut utiliser l'utf8

                          voir ici :

                          https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8

                          Ensuite, pour ton image, il faut la mettre dans ta balise <a>

                          <a href="" onclick="gestionClic(); return false;">
                            <img src=""  alt="Cliquez ici !"/>
                          </a>
                          (Nous sommes : <span id="nbr_clics">
                          <?php
                              $str = @file_get_contents('compteur/clickcount.data');
                              if($str !== FALSE)
                                  echo unserialize($str);
                              else
                                  echo 0;
                          ?></span>)
                        4. Modérateur
                          @jordane45

                          Dans la balise src de l'image.. il faut mettre le chemin vers ton image bien entendu..

                          il y a un bug sur le forum qui vide les balises src

                        5. @jordane45

                          Je l'ai fait, mais ça n'a pas marché. Ou plutot, ça a marché une fois et puis après non... Je ne comprends pas pourquoi. Tu ne veux pas me donner la phrase? Pour voir si j'avais fait ça correctement?