Forum Clubic

[PHP] problème de compteur [OK]

Bonjour,

je me suis créer grâce à un tuto sur le net un compteur graphique pour mon site …
il marche impécablement sur la page accueuil mais dés que je change de page il m’affiche un msg d’erreur:

d’aprés ce que j’ai compris il n’arrive pas à acceder à mon fichier compteur.txt où est stocké ma valeur du compteur

mon code est le suivant [cpp]<?
$fichier = ‘compteur.txt’;
$fp = file($fichier);
$compteur = $fp[0] + 1;

// Connexion à MySQL
mysql_connect(“", "”, “");
mysql_select_db("
”);

// -------
// ETAPE 1 : on vérifie si l’IP se trouve déjà dans la table
// Pour faire ça, on n’a qu’à compter le nombre d’entrées dont le champ “ip” est l’adresse ip du visiteur

$retour = mysql_query(‘SELECT COUNT(*) AS nbre_entrees FROM compteur WHERE ip=’’ . $_SERVER[‘REMOTE_ADDR’] . ‘’’);
$donnees = mysql_fetch_array($retour);

if ($donnees[‘nbre_entrees’] == 0) // L’ip ne se trouve pas dans la table, on va l’ajouter
{
mysql_query(‘INSERT INTO compteur VALUES(’’ . $_SERVER[‘REMOTE_ADDR’] . ‘’, ’ . time() . ‘)’);

// om mets à jour le fichier compteur.txt
$nouveau = fopen($fichier,‘w+’);
fwrite($nouveau,"$compteur \n");
fclose($nouveau);

}

// -------
// ETAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 24 heures

// On stocke dans une variable le timestamp qu’il était il y a 24 heures :
$timestamp_5min = time() - (3600 * 24); // 3600 * 24 = nombre de secondes écoulées en 24 heures
mysql_query('DELETE FROM compteur WHERE timestamp < ’ . $timestamp_5min);

// Ouf ! On n’a plus qu’à afficher le nombre de connectés !

if ($fp[0] < 100000)
echo (’’);
if ($fp[0] < 10000)
echo (’’);
if ($fp[0] < 100000)
echo (’’);
if ($fp[0] < 1000)
echo (’’);
if ($fp[0] < 100)
echo (’’);
if ($fp[0] < 10)
echo (’’);

$compteur = preg_replace("#([0-9])#s", '<img src="/img/$1.gif" border="1" style="border-color: #FFFFFF;">',$compteur);
echo "$compteur";

mysql_close(); // Déconnexion de MySQL
?>[/cpp]

Merci de votre aide …

Ca depend ou tu as mis ton fichier compteur , il faut joué avec les …/ , chaque …/ fait un présédent
[fixed]Compteur.txt
Dossier 1
Scriptcompteur.php => Il faut utilise …/compteur.txt
Dossier 2
Scriptcompteur.php => Il faut utilise …/…/compteur.txt
[/fixed]

Je sais pas si tu vois .

oui je vois … mais en fait il faudré que je mette le script dans chacun de mes dossiers ?

en fait là il se trouve à la racine et il est présent sur chaque page grace au " include " pour mes menus…

donc ce n’est pas possible de modifier le script à chaque fois vu qu’il est unique …

$fichier = ‘/home/web/users/aslck/www/compteur.txt’;

ou plus simple : utiliser les variables de base, dont PHP_SELF , et comparer le dossier courant avec le dossier du fichier compteur.txt

Bonjour et merci pour vos reponses …

==> aspect : merci j’y avais pas penser !! ça marche nikel maintenant

==> Sans-Nom : ça a un interet d’utiliser cette fonction pour un truc aussi simple ??

en tout cas merci bien !

Hé, c’est simple : ça évite d’avoir du caca :slight_smile: et ça peut reservir. Le mieux reste $_SERVER[‘DOCUMENT_ROOT’]

cf. http://www.php.net/source.php?url=/include/prepend.inc