Top clics avec compteurs en fichiers texte?

Fermé
Della.Zora Messages postés 3 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 15 avril 2009 - 4 août 2008 à 15:07
balou01 Messages postés 83 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 3 décembre 2014 - 4 août 2008 à 19:50
Bonjour,

Je me permet de poster ce sujet car je recherche de l'aide pour éclairer ma lanterne.

J'ai un compteur de page sur mon site, où les visites sont stockées dans un fichier texte.
J'aimerai afficher sur ma page d'accueil un top 10 des pages les plus visitées mais là je vous avoue que je bloque:
Je ne sais pas comment faire, où du moins quelles variables utiliser, pour scanner tous les fichiers compteurs et sélectionner ceux à la valeur la plus élevée et ensuite les afficher dans cet ordre?

J'ai cherché mais je n'ai pas trouvé de réponses solutionnant mon problème et comme j'apprends à programmer au fil de l'eau et toute seule, c'est pas forcément évident.

Voila.
Merci en tout cas à ceux qui pourront me donner un coup de pouce.

Della

1 réponse

balou01 Messages postés 83 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 3 décembre 2014 2
4 août 2008 à 19:50
Dans le protocole il faut :

1/ Ouvrir ton fichiers texte
2/ Lire les donné
3/ Compter le nombre de fois que tu vois chaque page
4/ Récupérer les 10 plus élevées
5/ Les afficher...

C'est pas une mince a faire tout ca !!! lol

Mais essai de t'inspirer de ca :

<?php
#######
$chemin_fichier_texte = './statistics.txt'; // Indique le chemin de ton fichier texte Ex : $chemin_fichier_texte = './www/script/comptage/chemin_de_ton_fichier_texte.txt';
$nb_de_resultat_affiche = 5; // Nombre de résultat que tu souhaite afficher
#######

$pattern = array(); // Creation du tableau $pattern
#######
#	Ici c'est a toi de rentrer les expression régulière (Regex) pour voir tes pages
#	Il y a autant de $pattern[...] qu'il y a de pages dans ton site
$pattern[0] = 'http://mon-site.fr/page_1.html'; // Ex : $pattern[0] = 'http://mon-site.fr/page_1.html';
$pattern[1] = 'http://mon-site.fr/page_2.html'; // Ex : $pattern[1] = 'http://mon-site.fr/page_2.html';
$pattern[2] = 'http://mon-site.fr/page_3.html'; // Ex : $pattern[2] = 'http://mon-site.fr/page_3.html';
$pattern[3] = 'http://mon-site.fr/page_4.html'; // Ex : $pattern[3] = 'http://mon-site.fr/page_4.html';
$pattern[4] = 'http://mon-site.fr/page_5.html'; // Ex : $pattern[4] = 'http://mon-site.fr/page_5.html';
// .  .  .
#
#
#######

$nb_pge = 0;
$nb_pge = count($pattern); // Compte le nombre total de page
$nb_view = array(); // Creation du tableau $nb_view
$nb_ligne = 0;

if($handle =fopen($chemin_fichier_texte, 'r')) // Ouverture du fichier texte en lecture seule
{
	if($fichier = fread($handle, filesize($chemin_fichier_texte))) // Lecture du fichier
	{
		$array_ligne = file($chemin_fichier_texte); // Creation d'un tableau "ligne par ligne" de ton fichier texte
		$nb_ligne = count($array_ligne); // Compte le nombre de ligne que contient ton fichier texte
		$j = 0; // Initialisation de $j
		
		while($j <= $nb_pge) // Boucle sur les différentes pages de ton site
		{
			$i = 0; // Initialisation de $i
			$nb_view[$j] = 0; // Initialisation de $nb_view[$j]
			
			foreach($array_ligne as $ligne) // Boucle sur les ligne du fichier texte
			{
				if(preg_match('#' . $pattern[$j] . '#', $ligne)) // Reconnaissance de l'expression régulière en cause : $pattern[$j]
				{
					$nb_view[$j]++; // Incrémentation du nombre de vu de la page en question
				}
			}
			$j++; // Incrémentation du nombre de page
		}
	}	
	fclose($handle); // Fermeture du fichier texte
}

unset($nb_view[$nb_pge]); // Supprime la derniere clé du tableau

rsort($nb_view); // Classement par odre décroissant :

$i = 0;

while($i < $nb_de_resultat_affiche) // Boucle pour afficher les $nb_de_resultat_affiche a afficher !
{
	$num_page = count($nb_view) - $i;
	echo 'La page ' . $num_page . ' a été vu : ' .$nb_view[$i] . ' foi(s)<br />';
	$i++;
}

?>


Je l'ai fait et testé en local donc il faut voir si ca marche en ligne mais il n'y a pas de raison....

voilou ! ;)
1