Se connecter / S'enregistrer
Votre question

Compteur de visite php/mysql

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
21 Mai 2009 16:34:47

Bonjour, depuis quelques jour j'essaye de faire un petit script de comptage de visite par php/ sql. Je veux qu'il affiche les visites depuis une heure, une semaine, un mois, un an et depuis sa création. Le comptage doit se faire dans la page index de mon site, l'affichage doit se faire dans la partie admin. Mon problème, seul la valeur totale (depuis la création du site) s'affiche, voici mon code:

partie admin

  1. <?php
  2.  
  3.  
  4. // Connexion à MySQL
  5. mysql_connect("**********", "*******", "********");
  6. mysql_select_db("********");
  7.  
  8. // ETAPE 2 : on compte le nombre d'ip stockées dans la table. C'est le nombre de visiteurs connectés
  9. $retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes');
  10. $donnees = mysql_fetch_array($retour);
  11.  
  12. // Ouf ! On n'a plus qu'à afficher le nombre de connectés !
  13. echo '<p>' . $donnees['nbre_entrees'] . ' visiteurs depuis le 21/05/2009 !</p>';
  14.  
  15.  
  16.  
  17. ?>
  18.  
  19. <?
  20. // Connexion à MySQL
  21. mysql_connect("**********", "*******", "********");
  22. mysql_select_db("********");
  23.  
  24. // -------
  25. // ETAPE 2 : onselectione les entrés dont le timestamp a un moi ou moins
  26.  
  27. // On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
  28. $timestamp_1an = time() - (60 * 60 * 24 * 365.25); // 60 * 60 * 24 * 30.5= un mois
  29.  
  30. // -------
  31. // ETAPE 3 : on compte le nombre d'ip stockées dans la table. C'est le nombre de visiteurs connectés
  32. $retour = mysql_query('SELECT COUNT(*) AS an FROM connectes_an WHERE timestamp < '31557600 );
  33. $an = mysql_fetch_array($retour);
  34.  
  35.  
  36. // Ouf ! On n'a plus qu'à afficher le nombre de connectés !
  37. ?>
  38. <html> <p><? . $an['an'] . ?> visiteurs cette année </p></html>
  39.  
  40. <?
  41. // Connexion à MySQL
  42. mysql_connect("**********", "*******", "********");
  43. mysql_select_db("********");
  44.  
  45. // -------
  46. // ETAPE 2 : onselectione les entrés dont le timestamp a un moi ou moins
  47.  
  48. // On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
  49. $timestamp_1mois = time() - (60 * 60 * 24 * 30.5); // 60 * 60 * 24 * 30.5= un mois
  50.  
  51. // -------
  52. // ETAPE 3 : on compte le nombre d'ip stockées dans la table. C'est le nombre de visiteurs connectés
  53. $retour = mysql_query('SELECT COUNT(*) AS mois FROM connectes_mois WHERE timestamp < ' . $timestamp_1mois');
  54. $mois = mysql_fetch_array($retour);
  55.  
  56.  
  57. // Ouf ! On n'a plus qu'à afficher le nombre de connectés ! ?>
  58. <html><p> <?. $mois['mois'] . ?> visiteurs ce mois ci </p> </html>
  59.  
  60. <?
  61. // Connexion à MySQL
  62. mysql_connect("**********", "*******", "********");
  63. mysql_select_db("********");
  64.  
  65. // ETAPE 2 : onselectione les entrés dont le timestamp a une semaine ou moins
  66.  
  67. // On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
  68. $timestamp_1semaine = time() - (60 * 60 * 24 * 7); // 60 * 60 * 24 * 7= une semaine
  69.  
  70. // -------
  71. // ETAPE 3 : on compte le nombre d'ip stockées dans la table. C'est le nombre de visiteurs connectés
  72. $retour = mysql_query('SELECT COUNT(*) AS semaine FROM connectes_semaine WHERE timestamp < ' . $timestamp_1semaine');
  73. $semaine = mysql_fetch_array($retour);
  74.  
  75.  
  76. // Ouf ! On n'a plus qu'à afficher le nombre de connectés !?>
  77. <html> <p><? . $semaine['semaine'] . ?> visiteurs cette une semaine</p> </html>
  78.  
  79. <?
  80. // Connexion à MySQL
  81. mysql_connect("**********", "*******", "********");
  82. mysql_select_db("********");
  83.  
  84. // ETAPE 2 : onselectione les entrés dont le timestamp a une heure ou moins
  85.  
  86. // On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
  87. $timestamp_1heure = time() - (60 * 60 ); // 60 * 60 = une heure
  88.  
  89. // -------
  90. // ETAPE 3 : on compte le nombre d'ip stockées dans la table. C'est le nombre de visiteurs connectés
  91. $retour = mysql_query('SELECT COUNT(*) AS heure FROM connectes_heure WHERE timestamp < ' . $timestamp_1heure');
  92. $heure = mysql_fetch_array($retour);
  93.  
  94.  
  95. // Ouf ! On n'a plus qu'à afficher le nombre de connectés !?>
  96. <html> <p><? . $heure['heure'] . ?> visiteurs depuis une heure</p> </html>




partie comptage


  1. <?php
  2.  
  3. // Connexion à MySQL
  4. mysql_connect("**********", "*******", "********");
  5. mysql_select_db("********");
  6. // -------
  7. // ETAPE 1 : on vérifie si l'IP se trouve déjà dans la table
  8. // Pour faire ça, on n'a qu'à compter le nombre d'entrées dont le champ "ip" est l'adresse ip du visiteur
  9. $retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
  10. $donnees = mysql_fetch_array($retour);
  11.  
  12. if ($donnees['nbre_entrees'] == 0) // L'ip ne se trouve pas dans la table, on va l'ajouter
  13. {
  14. mysql_query('INSERT INTO connectes VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
  15. mysql_query('INSERT INTO connectes_an VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
  16. mysql_query('INSERT INTO connectes_mois VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
  17. mysql_query('INSERT INTO connectes_semaine VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
  18. mysql_query('INSERT INTO connectes_an VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
  19. }
  20.  
  21. ?>


Je tiens a préciser que je m'inspire du script du nombre de connectés sur le site du zéro

merci d'avance pour vos réponses


Autres pages sur : compteur visite php mysql

21 Mai 2009 17:07:15

oui et ? quest ce que tu n'arrive pas à faire.
Déja :
# mysql_connect("**********", "*******", "********" );
# mysql_select_db("********" );

4 fois dans la premiere partie du script ... une seule fois suffit.
m
0
l
21 Mai 2009 17:19:14

mon problème:

ce que je voudrai qu'il soit affiché:

1000 visiteurs depuis le 21/05/2009 !

500 visiteurs cette année

55 visiteurs ce mois ci

20 visiteurs cette une semaine

1 visiteurs depuis une heure



ce qu'il m'affiche:

10 visiteurs depuis le 21/05/2009 !

visiteurs cette année

visiteurs ce mois ci

visiteurs cette une semaine

visiteurs depuis une heure


aucune valeure n'est associé aux 4 dernieres categories bien qu'il y ai des entrés dans la table sql
m
0
l
Contenus similaires
21 Mai 2009 18:45:35

Dans tes requetes de récupération de tes données
  1. $retour = mysql_query('SELECT COUNT(*) AS mois FROM connectes_mois WHERE timestamp < ' . $timestamp_1mois');


Soit tu as oublié le . (point) après la variable, soit un a une quote en trop, la synthaxe correct est celle-ci:
  1. $retour = mysql_query('SELECT COUNT(*) AS mois FROM connectes_mois WHERE timestamp < '.$timestamp_1mois.' ');

Ou
  1. $retour = mysql_query('SELECT COUNT(*) AS mois FROM connectes_mois WHERE timestamp < ' . $timestamp_1mois);
m
0
l
22 Mai 2009 01:05:00

Tu veux le faire toi même ou tu cherches un script pour pouvoir le faire!

Sinon, tu as des sites Internet très simple permettant d'effectuer cette manoeuvre!

Regarde sur le site de moostik!
m
0
l
22 Mai 2009 01:11:27

  1. <html><p> <?. $mois['mois'] . ?> visiteurs ce mois ci </p> </html>

en
  1. <p><?php echo $moi['mois']; ?> visiteurs ce mois ci</p>
m
0
l
22 Mai 2009 12:18:07

Faut surtout commencer par le commencement.
m
0
l
22 Mai 2009 16:29:36

merci de votre aide, problème...toujours pas en fonction...
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS