Compteur de clics sans reset (avec php)

Résolu/Fermé
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022 - 13 juil. 2022 à 13:39
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022 - 17 juil. 2022 à 00:09

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,

A voir également:

18 réponses

letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
13 juil. 2022 à 13:43

C'est encore moi. Je viens de voir qu'il fallait peut-etre que j'utilise Ajax. Mais à part Sophocle, Ajax...

0
jordane45 Messages postés 38293 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024 4 704
13 juil. 2022 à 21:02

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


0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
13 juil. 2022 à 23:22

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.

0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
14 juil. 2022 à 20:25

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

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
Modifié le 14 juil. 2022 à 22:06

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
0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
14 juil. 2022 à 21:39

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>";
        }
    }
}
0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
Modifié le 14 juil. 2022 à 22:08

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)

0
jordane45 Messages postés 38293 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024 4 704
14 juil. 2022 à 22:17

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..

0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
14 juil. 2022 à 22:34

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!

0
jordane45 Messages postés 38293 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024 4 704
14 juil. 2022 à 22:40

ç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.

0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
14 juil. 2022 à 23:50

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...

0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
14 juil. 2022 à 23:58

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.

0
jordane45 Messages postés 38293 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024 4 704
15 juil. 2022 à 00:07

modifie la ligne de code

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

par

 $str = file_get_contents('./compteur/clickcount.data');
0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
15 juil. 2022 à 01:46

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é

0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
Modifié le 15 juil. 2022 à 07:15

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...

0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022 > letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
15 juil. 2022 à 21:00

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...

0
jordane45 Messages postés 38293 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024 4 704
15 juil. 2022 à 21:57

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;
  }
}
?>
0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
Modifié le 16 juil. 2022 à 09:01

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)

0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
16 juil. 2022 à 00:39

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)

0
jordane45 Messages postés 38293 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024 4 704 > letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
16 juil. 2022 à 00:53

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...)

0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022 > jordane45 Messages postés 38293 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024
16 juil. 2022 à 01:22

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.

0
jordane45 Messages postés 38293 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024 4 704 > letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
16 juil. 2022 à 01:41

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.

0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
Modifié le 16 juil. 2022 à 04:40

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));

?>
0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
16 juil. 2022 à 04:33

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.

0
jordane45 Messages postés 38293 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024 4 704
16 juil. 2022 à 10:09

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 )


0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
Modifié le 16 juil. 2022 à 10:56

Ç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

0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
16 juil. 2022 à 14:35

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...

0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
16 juil. 2022 à 17:43

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,

0
jordane45 Messages postés 38293 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024 4 704
16 juil. 2022 à 18:24

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 !

0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022 > jordane45 Messages postés 38293 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024
16 juil. 2022 à 18:53

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?

0
jordane45 Messages postés 38293 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024 4 704
16 juil. 2022 à 19:57

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
});
0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
Modifié le 16 juil. 2022 à 20:11

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.

0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022 > letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
Modifié le 16 juil. 2022 à 20:28

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...

0
jordane45 Messages postés 38293 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024 4 704 > letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022
16 juil. 2022 à 22:17

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>)
0
jordane45 Messages postés 38293 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024 4 704 > jordane45 Messages postés 38293 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024
16 juil. 2022 à 22:17

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

0
letocest Messages postés 28 Date d'inscription mercredi 13 juillet 2022 Statut Membre Dernière intervention 22 juillet 2022 > jordane45 Messages postés 38293 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024
16 juil. 2022 à 22:45

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?

0