Compter le nombre de visiteurs

Signaler
Messages postés
49
Date d'inscription
mardi 8 septembre 2009
Statut
Membre
Dernière intervention
26 novembre 2012
-
Messages postés
2
Date d'inscription
vendredi 8 octobre 2010
Statut
Membre
Dernière intervention
26 avril 2011
-
Bonjour à tous.

je n'arrive pas à compter le nombre total de visiteurs de mon site.
voici le code de ma page connectes.php:

<?php
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
$donnees = mysql_fetch_array($retour);

if ($donnees['nbre_entrees'] == 0) // L'IP ne se trouve pas dans la table, on va l'ajouter.
{
    mysql_query('INSERT INTO connectes VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
}
else // L'IP se trouve déjà dans la table, on met juste à jour le timestamp.
{
    mysql_query('UPDATE connectes SET timestamp=' . time() . ' WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
}

// -------
// ÉTAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 5 minutes.

// On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
$timestamp_5min time() - (60 * 5); // 60 * 5 nombre de secondes écoulées en 5 minutes
mysql_query('DELETE FROM connectes WHERE timestamp < ' . $timestamp_5min);

// -------
// ÉTAPE 3 : on compte le nombre d'IP stockées dans la table. C'est le nombre de visiteurs connectés.
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes');
$donnees = mysql_fetch_array($retour);


// Ouf ! On n'a plus qu'à afficher le nombre de connectés !
echo 'Il y a actuellement ' . $donnees['nbre_entrees'] . ' visiteur(s)!

';
?>



merci pour l'aide

7 réponses

Messages postés
128
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
6 mai 2011
2
Bonjour,

Le problème est à quel endroit ?
De plus, vous devriez renommer la colonne "timestamp" car je crois que c'est un mot réservé.
Messages postés
49
Date d'inscription
mardi 8 septembre 2009
Statut
Membre
Dernière intervention
26 novembre 2012

merci pour ta reponse.
le probleme est que le nombre de connecté est toujours a 1.même si 10 personnes sont connecté.
Messages postés
128
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
6 mai 2011
2
Il y a bien toutes les IP entrées dans ta BDD ?
Messages postés
49
Date d'inscription
mardi 8 septembre 2009
Statut
Membre
Dernière intervention
26 novembre 2012

normalement c'est quand quelqu'un se connecte que ca affiche son adresse ip dans la base.je ne vois qu'une seul adresse ip dans ma base.
Messages postés
38
Date d'inscription
mercredi 14 avril 2010
Statut
Membre
Dernière intervention
2 septembre 2011

Salut,
a l'oeil, ton code semble cohérent. Il doit s'agir d'un "truc à la con".

Pour voir d'ou viens le problème tu peux faire des echo de tes variables à l'intérieur de tes conditions. Cela te permettra de voir dans quel cas tu rentres.

De plus comme dit Ludwig 59, est-ce que les données de ta table(dans phpmyAdmin ou autre) sont cohérentes lorsque tu testes?

Pourquoi fais-tu un count lors de la premiere requete?
Il suffit de faire un select normal, d'y associer un my_sql_fetch_object et de regarder s'il y a au moins une ligne(ça change pas grand chose mais je trouve cela plus propre).

Comment fais-tu tes test?
Si tu testes de chez toi avec plusieurs ordi derriere une box, ce sera toujours l'Ip de la box que ton programme verra, donc, un seul visiteur pour ton programme.
En espérant t'aider.
Bon dev!
Messages postés
49
Date d'inscription
mardi 8 septembre 2009
Statut
Membre
Dernière intervention
26 novembre 2012

Grand merci à vous tous pour vos aides.ca fontionne maintenant.encore une fois merci
Messages postés
2
Date d'inscription
vendredi 8 octobre 2010
Statut
Membre
Dernière intervention
26 avril 2011