Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

copier les données d'un compteur dans excel


scritch

Messages recommandés

bonjour,

 

sur mon site, j'ai un fichier .compteur générer par du php qui me donne le nombre de visiteur total, le nombre de visite par jour et le nombre de pages vues.

 

Je voudrais récupérer ces données tous les soirs dans un tableau excel de manière automatique ou a defaut, copier mon fichier .compteur en le renommant et lui donner la date du jour comme nom.

 

voici le code qui creer le .compteur

$fichier = '.htcompteur';
if( !file_exists($fichier) ) {
$fp = fopen($fichier, "w");
fwrite($fp, serialize(array()));
fclose($fp);
}

$argument_visites = 'visites';
$argument_requêtes = 'requêtes';
$ip = $_SERVER['REMOTE_ADDR'];
$time = date('YmdGis');

$lignes = file($fichier);
$donnees = unserialize($lignes[0]);

foreach( $donnees as $cle => $valeur )
{
if( substr($valeur, 0, 8) != substr($time, 0, 8) &&
$cle != $argument_visites &&
$cle != $argument_requêtes ) {
unset($donnees[$cle]);
}
}
$donnees[$argument_requêtes]++;
if( !$donnees[$ip] ) {
$donnees[$argument_visites]++;
$donnees[$ip] = $time;
}

$nb_visiteurs = $donnees[$argument_visites];
$nb_aujourdhui = count($donnees)-2;
$nb_requêtes = $donnees[$argument_requêtes];

$fp = fopen($fichier,"w");
fwrite($fp, serialize($donnees));
fclose($fp);

echo $nb_visiteurs." visites dont ";
echo $nb_aujourdhui." aujourd'hui, ";
echo $nb_requêtes." pages affichées ";

?>

 

Je précise que le code n'est pas de moi. Je l'ai pri sur phpcs.com.

 

merci pour votre aide

Modifié par scritch
Lien vers le commentaire
Partager sur d’autres sites

Excel sait ouvrir des fichiers CSV et PHP permet d'en créer très facilement. Pourquoi ne pas créer un fichier de log "agrégées" dans lequel tu ajoutes chaque soir les stats du jour (en même temps que tu mets ces stats à zéro pour la nouvelle journée) ? Il s'agit juste d'ouvrir le fichier en écriture sans écraser le contenu existant et d'y ajouter la ligne...

Ca t'évitera la multiplication des fichiers "stats-du-JJ-MM-AAAA.log" ;-)

 

En gros, il faut faire le fopen avec "a" à la place de "w" ...

Lien vers le commentaire
Partager sur d’autres sites

normal, ton code ne prend en compte que la première ligne du fichier

$donnees = unserialize($lignes[0]);

 

si le fichier est ouvert en mode append, il faut lire la dernière ligne

$lignes = file($fichier);
$nblignes= count($lignes)
$donnees = unserialize($lignes[$nblignes]);

Lien vers le commentaire
Partager sur d’autres sites

Merci j'avance.

mais j'ai l'erreur suivante :

 

Warning: Invalid argument supplied for foreach() in /**********/index.php on line 82

Il doit s'agir d'un problème de tableau mais ....

 

c'est cette ligne :

foreach( $donnees as $cle => $valeur )

 

en plus, quand je regarde ce qui s'écrit dans le fichier, je voit qu'à chaque fois que je vais sur le site, une nouvelle ligne s'inscrit donc j'ai toujours le compteur qui reste à 1 et 1

 

La ligne du fichier .htcompteur :

a:4:{s:8:"requêtes";i:896;s:7:"visites";i:129;s:13:"86.204.132.36";s:13:"2008011922700";s:12:"90.10.177.35";s:13:"2008011983254";}a:3:{s:8:"requêtes";i:1;s:7:"visites";i:1;s:12:"90.10.177.35";s:13:"2008011991906";}a:3:{s:8:"requêtes";i:1;s:7:"visites";i:1;s:12:"90.10.177.35";s:13:"2008011992305";}a:3:{s:8:"requêtes";i:1;s:7:"visites";i:1;s:12:"90.10.177.35";s:13:"2008011992307";}a:3:{s:8:"requêtes";i:1;s:7:"visites";i:1;s:12:"90.10.177.35";s:13:"2008011992712";}

 

J'imagine qu'à chaque "{" correspond une nouvelle ligne.

 

J'ai rajouté le ";" qui manquait ici :"$nblignes= count($lignes)"

 

 

 

Je te remercie pour ton aide.

Sache que je ne demande pas qu'on me "mâche" le travail et que je fais de longues recherches sur les conseils que tu me donnes et j'essaye de corriger les erreurs par moi-même mais il y a des moment ou je suis dépassé.

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...