Se connecter avec
S'enregistrer | Connectez-vous

[PHP] soustraction bizzare

Dernière réponse : dans Programmation
Expert Programmation

Bonjour,

J'essai de faire un script de statistique de membre en ligne et de visiteur en ligne... pour les membres j'ai ceci:

  1. <?php
  2.  
  3. if ( $d = opendir("/home/0/0/monsite.com/www/sessions")) {
  4. $count = 0;
  5. $session_timeout = 60;
  6. while ( false !== ( $file = readdir( $d ) ) ) {
  7. if ( $file != '.' && $file != '..' ) {
  8. if ( time()- fileatime("/home/0/0/monsite.com/www/sessions" . '/' . $file) < $session_timeout ) {
  9. $count++;
  10. }
  11. }
  12. }
  13. }
  14. echo $count;
  15.  
  16. ?>


Ok il fonctionne!

Pour les visiteurs c'est stocké dans la BDD comme ceci:

  1. <?php
  2. require ('config.php');
  3. mysql_connect("$host", "$user", "$pass");
  4. mysql_select_db("$bdd");
  5.  
  6. $retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM visiteur_en_ligne WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
  7. $donnees = mysql_fetch_array($retour);
  8.  
  9. if ($donnees['nbre_entrees'] == 0)
  10. {
  11. mysql_query('INSERT INTO visiteur_en_ligne VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
  12. }
  13. else
  14. {
  15. mysql_query('UPDATE visiteur_en_ligne SET timestamp=' . time() . ' WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
  16. }
  17.  
  18. $timestamp_1min = time() - 60;
  19. mysql_query('DELETE FROM visiteur_en_ligne WHERE timestamp < ' . $timestamp_1min);
  20.  
  21. $retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM visiteur_en_ligne');
  22. $donnees = mysql_fetch_array($retour);
  23. $total = $donnees['nbre_entrees'];
  24.  
  25. mysql_close();
  26.  
  27. require ('includes/statistiques/utilisateur_en_ligne.php');
  28.  
  29. $visiteur = $total - $count;
  30.  
  31. echo $visiteur;
  32. ?>


A noter que si je fais un echo de $total le nombre de visiteur est correct.
Mais en faisant la soustraction j'ai comme résultat "01" et lorsque j'ouvre une session j'ai "10" je comprend pas =/



Autres pages sur : php soustraction bizzare

Lassé par la pub ? Créez un compte
Expert Programmation

Je viens de comprendre: il ne faut pas lire "01" et "10", ce sont les affichages successifs de $count et de $visiteur.
Je vais relire tranquillement ton code et essayer de le comprendre, mais jusque là les affichages me semblent cohérents. Le bug est ailleurs (dans la logique sûrement)
Lassé par la pub ? Créez un compte
Tom's guide dans le monde