Votre question

[PHP] soustraction bizzare

Tags :
  • Programmation
Dernière réponse : dans Programmation
8 Mai 2011 07:32:29

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

a c 145 L Programmation
8 Mai 2011 10:07:16

Et le var_dump de $donnees donne quoi ?
Ainsi qu'un var_dump de $count (et pas un echo) ?
m
0
l
8 Mai 2011 15:41:07

var_dump de $total donc de $donnees => 0string(1) "1"
var_dump de $count => "0int(0)" et quand je suis connecter => "1int(1)"
m
0
l
Contenus similaires
Pas de réponse à votre question ? Demandez !
a c 145 L Programmation
9 Mai 2011 16:02:20

Peut-être qu'en forçant le cast :
  1. $visiteur = intval($total) - intval($count);
m
0
l
9 Mai 2011 17:14:31

Non ça fais pareil =(
m
0
l
a c 145 L Programmation
9 Mai 2011 20:59:02

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)
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