Statistique utilisateurs

Petit nouveau ! | 2 Messages

01 juin 2011, 14:42

Bonjour

J'aimerais créer un module php qui affiche le nombre d'utilisateur sur mon site par rapport au adresse ip dans ma table.
Le problème est qu'une adresse ip peut apparaitre plusieurs fois dans des posts différents.

Il faudrait donc récupérer tous les ip dans `posts``ipmd5`supprimer les doublons
et afficher sous formes numérique le total des utilisateurs.

Quelqu'un pourrait m'aider a traduire en php :priere:

Merci d'avance

ViPHP
ViPHP | 3607 Messages

01 juin 2011, 22:05

Bonsoir,

A priori pour ce genres de choses on crée une table spécifique.
On ne stocke par exemple que l'ip et la dernière date de connexion, ce qui permet de sortir des statistiques rapidement.
Tu as un exemple de réalisation ici : http://www.siteduzero.com/tutoriel-3-14 ... ectes.html

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

01 juin 2011, 22:41

Pour ce que tu veux faire, tu peux le réaliser en SQL grâce à l'instruction DISTINCT qui dédoublonne les résultats :
SELECT COUNT(DISTINCT ip) AS nombre
  FROM ta_table 
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 2 Messages

02 juin 2011, 11:32

Merci bien, ca a l'air de fonctionner

Voici mon code
$results = $tc_db->GetAll("SELECT HIGH_PRIORITY * FROM `" . KU_DBPREFIX . "boards` ORDER BY `name` ASC");
if (count($results) > 0) {
	foreach ($results as $line) {
	$posts = $tc_db->GetOne("SELECT COUNT(DISTINCT `ipmd5`) FROM `" . KU_DBPREFIX . "posts` ");
	}
}

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 juin 2011, 11:45

Pourquoi un foreach alors que tu n'utilises pas la variable $line dans ta requête ? Ce n'est pas très optimisé...

En effet, si ta première requête retourne 10 résultats, tu vas exécuter 10 fois le count(distinct) qui va te retourner 10 fois le même résultat... le récupérer une seule fois en dehors de la boucle devrait être suffisant ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...