cs_esteller
Messages postés49Date d'inscriptionmardi 8 septembre 2009StatutMembreDernière intervention26 novembre 2012
-
2 mars 2011 à 14:15
anwerabbessi
Messages postés2Date d'inscriptionvendredi 8 octobre 2010StatutMembreDernière intervention26 avril 2011
-
26 avril 2011 à 20:00
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)!
';
?>
bobertin89
Messages postés38Date d'inscriptionmercredi 14 avril 2010StatutMembreDernière intervention 2 septembre 2011 3 mars 2011 à 18:36
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!