Tom's Guide > Forum > Programmation > Compteur de visite php/mysql

Compteur de visite php/mysql

Forum Programmation : Compteur de visite php/mysql

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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

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





partie comptage


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



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


Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

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.

Répondre à okinou

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

Répondre à mpoo

Dans tes requetes de récupération de tes données

Code :
  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:

Code :
  1. $retour = mysql_query('SELECT COUNT(*) AS mois FROM connectes_mois WHERE timestamp < '.$timestamp_1mois.' ');


Ou

Code :
  1. $retour = mysql_query('SELECT COUNT(*) AS mois FROM connectes_mois WHERE timestamp < ' . $timestamp_1mois);

Répondre à floboss@IDN

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!

------------------------------ En Restaurant, le coeur de breizh
Répondre à Tybbow

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


en

Code :
  1. <p><?php echo $moi['mois']; ?> visiteurs ce mois ci</p>

------------------------------ Rémunère ton site
Hosting Favicon
Clic pas ici
Répondre à Allstar27

Faut surtout commencer par le commencement.

Répondre à okinou

merci de votre aide, problème...toujours pas en fonction...

Répondre à mpoo
Tom's Guide > Forum > Programmation > Compteur de visite php/mysql
Aller à :

Il y a 356 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens