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


Messages recommandés

Posté(e) (modifié)

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

Posté(e)

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

Posté(e)

bonjour, et merci pour ta réponse.

 

ta solution me convient très bien mais malgré ton explication, je ne vois pas ce que je dois modifier pour la mettre en œuvre.

 

Peux tu me montrer ce que je dois changer dans le code ?

 

Merci

Posté(e)

$fp = fopen($fichier,"w");

 

tu remplaces w (write) par a (append)

Posté(e)

bonjour,

 

après plusieurs tentatives, je n'y arrive pas.

 

Le fichier et effectivement modifié mais du coup, je n'arrive plus a récupérer les données avec les 3 dernières lignes du code.

 

si vous avez d'autres solutions, je suis preneur.

 

Merci

Posté(e)

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

Posté(e)

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

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