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 - 17 juil. 2022 à 00:09
- Compteur de clics sans reset (avec php)
- Compteur électrique - Guide
- Comment reset son pc - Guide
- Comment ralentir un compteur linky forum - Accueil - Objets connectés
- Compteur communicant - Guide
- Compteur de contractions - Télécharger - Santé & Bien-être
18 réponses
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...
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
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.
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionModifié 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
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>";
}
}
}
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)
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..
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!
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.
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...
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.
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');
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é
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...
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...
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; } } ?>
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)
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)
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...)
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.
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.
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>
<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));
?>
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.
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 )
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
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...
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>
<big style="font-weight: bold;">Calque 7</big></big><br>
</div>
<div style="position: absolute; left: 374px; top: 7px;"><big> <img style="width: 250px; height: 250px;" alt="" src=""></big><br>
</div>
<big> <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> <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>
<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>
Calque 6</big><br>
</div>
<div style="position: absolute; left: 56px; top: 315px; width: 135px; text-align: center;"><big><big> 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>
<big style="font-weight: bold;">Calque 7</big></big><br>
</div>
<div style="position: absolute; left: 374px; top: 7px;"><big> <img style="width: 250px; height: 250px;" alt="" src=""></big><br>
</div>
<big> <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> <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>
<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>
Calque 6</big><br>
</div>
<div style="position: absolute; left: 56px; top: 315px; width: 135px; text-align: center;"><big><big> 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,
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 !
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?
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 });
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.
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...
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>)
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
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?