compteur de visite qui deconne [resolu]
Dernière réponse : dans Programmation
bonsoir tous le monde
j'ai un petit probleme: voila ce script si dessous fonctionne bien en local mais en ligne il ne marche pas
c'est un script visant a compté le nombre totale de visiteur depuis la creation du site
j'explique:en local pas de souci si la derniere actualisation de page date de moins d'une heure le visiteur n'est pas compté comme nouveau visiteur mais en ligne c'est pas trop ca a chaque actualistaion de page le visiteur et compté comme nouveau visiteur c'est a ne rien n'y comprendre
EDIT: j'ajouterais que le visiteur actualise son ip est ajouté deux fois et si il va sur une autre page 1 fois seulment
merci a ceux qui pourront m'aider
j'ai un petit probleme: voila ce script si dessous fonctionne bien en local mais en ligne il ne marche pas
c'est un script visant a compté le nombre totale de visiteur depuis la creation du site
j'explique:en local pas de souci si la derniere actualisation de page date de moins d'une heure le visiteur n'est pas compté comme nouveau visiteur mais en ligne c'est pas trop ca a chaque actualistaion de page le visiteur et compté comme nouveau visiteur c'est a ne rien n'y comprendre
EDIT: j'ajouterais que le visiteur actualise son ip est ajouté deux fois et si il va sur une autre page 1 fois seulment
<?php
// Connexion à MySQL
mysql_connect("localhost", "root", "");
mysql_select_db("test");
// -------
// ETAPE 1 : on vérifie si l'IP se trouve déjà dans la table en comptant combien de fois l'ip du visiteur apparait
$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
{
('INSERT INTO connectes VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
}
else // L'ip se trouve déjà dans la table, on met juste à jour le timestamp
$reponse = mysql_query("SELECT * FROM connectes");
$donneesDeLaBDD = mysql_fetch_array($reponse);
{
// On stocke dans une variable le timestamp qu'il était il y a 60 minutes
$timestamp_60min = time() - (60*60); // 60 * 60 = nombre de secondes écoulées en 1 heure
if ($donneesDeLaBDD['timestamp'] >= $timestamp_60min)//si le timestamp de la derniere visite > que le timestamp il y 1 heure
{
//on met a jour tous les timestamps du visiteurs (faute de mieux)
mysql_query('UPDATE connectes SET timestamp=' . time() . ' WHERE ip="'.$_SERVER['REMOTE_ADDR'].'"');
}
else//sinon si ce n'est pas le cas
{
//on crée une nouvelle entrée avec l'ip du visiteur (le visiteur peut donc avoir plusieur fois son ip dans la BDD)
mysql_query('INSERT INTO connectes VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
}
}
// ETAPE 2 : on compte le nombre d'ip stockées dans la table. C'est le nombre de visiteurs qui ont vu le site
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes');
$donneesEtape2 = mysql_fetch_array($retour);
echo '<p>Vous êtes le ' . $donneesEtape2['nbre_entrees'] . 'ème visiteur!</p>';
?>
merci a ceux qui pourront m'aider
Autres pages sur : compteur visite deconne resolu
Lassé par la pub ? Créez un compte
ca fait longtemps que j'ai pas utilisé mysql mais je crois que la valeur d'un timestamp s'affiche "annee-mois-jour heure", donc:
est une comparaison entre chaîne, le résultat n'est pas celui attendu, il te faut modifier l'une des deux variables (php/mysql) et revoir ta comparaison dans le if.
if ($donneesDeLaBDD['timestamp'] >= $timestamp_60min)
est une comparaison entre chaîne, le résultat n'est pas celui attendu, il te faut modifier l'une des deux variables (php/mysql) et revoir ta comparaison dans le if.
crazycat: on peut inserer un timestamp ou une datetime sous mysql avec plusieurs format dont "YmdHis" mais l'affichage (YYYY-MM-DD HH:MI:SS) est le même quelque soit le type datetime/timestamp en tout cas pour les versions > 4.1 (mais je crois que c'est le cas avant aussi)
EDIT: en tout cas si on modifie pas la config
EDIT: en tout cas si on modifie pas la config
aravis@IDN a dit :
merci a ceux qui pourront m'aider
<?php
}
else // L'ip se trouve déjà dans la table, on met juste à jour le timestamp
$reponse = mysql_query("SELECT * FROM connectes");
$donneesDeLaBDD = mysql_fetch_array($reponse);
{
ton else ne fait que le mysql_query()... ton accolade s'ouvre n'importe ou...
Quand on recopie, on fait attention
je suis vexé c'est moi qui l'ai fait tous seul ce truc (en m'inspirant d'ailleurs c'est vrai mais tous seul quand meme )
bon j'ai changé en
mais ca ne change strictement rien au probleme ou alors j'ai mal compris ce que tu m'as dit ce qui est possible
bon j'ai changé en
else // L'ip se trouve déjà dans la table, on met juste à jour le timestamp
{
$reponse = mysql_query("SELECT * FROM connectes" );
$donneesDeLaBDD = mysql_fetch_array($reponse);
mais ca ne change strictement rien au probleme ou alors j'ai mal compris ce que tu m'as dit ce qui est possible
Citation :
$reponse = mysql_query("SELECT * FROM connectes" );il faut rajouter la condition where ip=...
là ca a l'air de marcher je ne m'avance pas trop mais au moins ca n'ajoute pas de visiteur a chaque actualistation et ca met a jour le timestamps
Citation :
mets un
1. echo $donneesDeLaBDD['timestamp'];
et
1. echo $timestamp_60min;
1163436474
1163440073
donc a priori mes variable sont bonne ^^
Citation :
je viens de relire ce post, appeler une colonne avec le nom d'un type, je savais pas que c'etait possible mais bon... heu je croi pas avoir dit que je voulais faire ca ?!? enfin bon... c'est pas grave
aravis@IDN a dit :
je suis vexé c'est moi qui l'ai fait tous seul ce truc (en m'inspirant d'ailleurs c'est vrai mais tous seul quand meme )Lol, je ne voulais pas dire que tu avais copié le script sur un autre, juste que tu t'es planté en faisant une modif sur ton code (collé une partie au mauvais endroit).
Sinon, je t'avoues que je ne vois pas ce qui foire, je te conseille de faire un affichage de debug après chaque if() { et chaque else { histoire que l'on sache où tu passes exactement.
Et aussi un echo de tes requètes SQL, il y en a peut-être une de faussée.
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumInserer un compteur de visite invisible
- articlesCompteur de visite pour wordpress
- ForumCode compteur de visite
- ForumCompteur de visite non visible
- ForumCompteur visite php mysql
- ForumCompteur visite site internet
- articlesFlash compteur de visite
- ForumCompteur visite
- ForumCreer un compteur de visite
- ForumComment creer un compteur de visite
- Voir plus