COMPTEUR DE VISITEURS UNIQUES QUOTIDIEN AVEC MYSQL.

Signaler
Messages postés
358
Date d'inscription
vendredi 1 novembre 2002
Statut
Membre
Dernière intervention
5 septembre 2006
-
mouet44
Messages postés
3
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
2 avril 2009
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/18483-compteur-de-visiteurs-uniques-quotidien-avec-mysql

mouet44
Messages postés
3
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
2 avril 2009

juste un truc. dans ton fichier install
supprimer la derniere virgule ;) ce qui donne ceci
CREATE TABLE compteur
(
ip CHAR(25) NOT NULL UNIQUE PRIMARY KEY,
date CHAR(10) NOT NULL
);
webdeb
Messages postés
488
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
3
J'attends d'avoir du temps devant moi :)
cs_grobs
Messages postés
25
Date d'inscription
dimanche 12 mars 2006
Statut
Membre
Dernière intervention
1 janvier 2009

Alors... Qu'est-ce que t'attends ?! :p
webdeb
Messages postés
488
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
3
Il faudrait surtout que je refasse tout le code... Celui est trop vieux, obsolète et pas du tout optimisé :s
cs_grobs
Messages postés
25
Date d'inscription
dimanche 12 mars 2006
Statut
Membre
Dernière intervention
1 janvier 2009

Toute petite chose de rien du tout :

change ça :
if($compteur '1' OR $compteur '0')

en ça :
if($compteur <= '0')

;)
amidulysse
Messages postés
1
Date d'inscription
lundi 18 décembre 2006
Statut
Membre
Dernière intervention
18 décembre 2006

Je suis désolé mais ce code est fondamentalement erroné.
La réponse au query de Mysql (ligne 42) n'est pas une seule valeur de $ip mais toute la série d'adresses IP de la journée. Il faut comparer la nouvelle adresse IP à toute la série!
C'est étonnant que personne ne s'en soit aperçu!
Si je devais donner une note elle serait trés petite!
eon2
Messages postés
8
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
31 août 2004

Je voi pas comment on peut faire un compteur sans avoir accé à la base de donnée à cahque visiteur ?
(comme tu le dit kirua)
bonjovi51
Messages postés
51
Date d'inscription
vendredi 24 janvier 2003
Statut
Membre
Dernière intervention
14 décembre 2006

Super ce code, c'est tout ce dont j'avais besoin !!

Je vais te mettre un 10 puisque pour moi, ca suffit

Merci encore pour tus ces codes posés par tout le monde, c'est colle tout ca !!
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

éclaircis ta pensée

pour l'instant ce que je comprends, c'est qu'il faut que la date soit la même que celle du dernier enregistrement, ben ça tu fais une requête mysql ordonnée en fonction de la date:

ORDER BY champ_date ASC (ou DESC)
ASC ascendant, DESC descendant = croissant / décroissant
cs_pyranhaz
Messages postés
236
Date d'inscription
mardi 13 mai 2003
Statut
Membre
Dernière intervention
13 décembre 2004

Le problème est que la valeur est inconnue...
L'anti-aspirateur bloque les ip en retanant la date...
il faut donc qu'il vide la table 'ban' where 'date' est différente de celle du ip qui vient d'être banni et ne garde que les ip bannis ayant la même date et effacera tout le monde dès que la date changera pour un nouvel ip banni, etc.

Merci !
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

ben pour la commande SQL ça donne ça:

DELETE FROM table WHERE champ='valeur'

et donc en php tu as par exemple, pr la table $table, le champ $champ et la valeur $valeur:

$requete = "DELETE FROM $table WHERE $champ='$valeur'";

ce qui est important, c'est de ne pas oublier les ' ' autour de $valeur !!
cs_pyranhaz
Messages postés
236
Date d'inscription
mardi 13 mai 2003
Statut
Membre
Dernière intervention
13 décembre 2004

OK alors j'étais dans le champs en croyant que ça ferait l'affaire...
Je vais donc garder mon compteur cgi qui fait le travail...

Autre chose...

J'ai tenté d'adapter la partie du script qui vide la table dans mon script anti-aspirateur et il semble que cela n'efface rien du tout...
Seriez-vous disposé à m'aider à apporter les correctifs nécessaires svp ???

Merci !
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

et puis si tu emts un enregistrement ds ta table pr chaque visiteur SEULEMENT pr faire un compteur, tu vas avoir un problème de rapidité qd ton site prendra de l'importance. pense à changer de système !
perig
Messages postés
358
Date d'inscription
vendredi 1 novembre 2002
Statut
Membre
Dernière intervention
5 septembre 2006

pyranhaz --> Si j’ai bien compris, tu veux changer ton compteur mais ce script n'est pas un script pour un compteur total.
Il ne compte que le nombre de visiteurs qui passent sur ta page dans la journée et se réinitialise chaque jour.
Ce n'est donc pas la même chose que ton conteur qui est à 26078 visiteurs.
cs_pyranhaz
Messages postés
236
Date d'inscription
mardi 13 mai 2003
Statut
Membre
Dernière intervention
13 décembre 2004

Comment je fais si je ne veux pas perdre la comptabilisation de mes visiteurs actuels en installant ce compteur répondant mieux à mes attentes ???

J'ai 26078 visiteurs de comptabilisés et je ne suis pas intéressé à inscrire 26078 fausses enregistrements dans MySQL pour atteindre le chiffre magique...

Comment peut-on alors modifié le nombre d'enregistrement MySQL ???
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

pour la date toujours, moi je te conseil d'enregistrer des TIMESTAMPs dans ta table MySQL plutot que des dates. 9a te permet de récupérer la date et de l'enregistrer bcp plus simplement. Exemple:

pour enregistrer, tu passes time() comme param. pour que soit enregistrée la date du jour, ou bien tu utilises la fontion MySQL: NOW

pour lire, tu récupère ton timestamp dans $ts par exemple, eh bien après tu l'affiches comme tu veux!! tu fais ça: date($format, $ts);

et $format = "Y-m-d H:m:s" par exemple, c'est comme tu veux, et tu changes très facilement ;-)
cs_Nocturne
Messages postés
115
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
15 novembre 2007

C'est bien, mais juste une petite remarque, tu ne comptes pas les visiteurs qui peuvent provenir d'une connexion en reseau car ils ont la même IP Wan et donc compte pour un visiteur ce qui est faut. Domage.
webdeb
Messages postés
488
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
3
Merci pour ton commentaire !

En ce qui concerne la date, c'est juste une préférence que j'ai de faire comme ça ! Je sais que l'on peut la récupérer en une ligne. Ca me permet de la retravailler plus facilement !

@+ et encore merci !
perig
Messages postés
358
Date d'inscription
vendredi 1 novembre 2002
Statut
Membre
Dernière intervention
5 septembre 2006

heu!!! Pour la date tu peux aussi la récupérer en 1 ligne avec
$date = date("Y-m-d");
sinon c'est bien!!