Napisałem skrypt statystyk, który zlicza ilość odwiedzin unikalnych (na podstawie cookies) oraz odświeżeń pochodzących z danej godziny z danego dnia. Do momentu, gdy nie podpiąłem go pod stronę główną mojego serwisu wszystko działało wyśmienicie i otrzymywałem odpowiednie rezultaty na stronie oraz w bazie danych.

Natomiast po wstawieniu kodu php na samej górze w pliku index.php pojawił się problem. Po zapisaniu do bazy liczby odświeżeń ($odsw) w tabeli pojawia się najpierw wartość 2 (zamiast zadeklarowanej 1), a kolejno (po odświeżeniu strony) jest zwiększana o kolejne 2. Zdziwiło mnie to. Dlatego wstawiłem jeszcze dla pewności instrukcję echo() zamiast mysql_query() i spostrzegłem, że kierowane do bazy zapytanie (UPDATE oraz INSERT) jest jak najbardziej prawidłowe i znajduje się w nim prawidłowa liczba odświeżeń.

Kod nie jest wykonywany w żadnej pentli, oto on:

  1. <?php
  2. $db = 'db';
  3. $user = 'user';
  4. $pass = 'pass';
  5.  
  6. $con = mysql_connect (&#092;"localhost\", $user, $pass) or die ('ZONK: ' . mysql_error());
  7.  
  8. $timestamp = time();
  9. $hour = date( &#092;"G\", $timestamp );
  10. $day = date( &#092;"j\", $timestamp );
  11. $month = date( &#092;"n\", $timestamp );
  12. $year = date( &#092;"Y\", $timestamp );
  13.  
  14. $entryGS = mysql_query('SELECT * FROM `genstats` WHERE hour='.$hour.' && day='.$day.' && month='.$month.' && year='.$year.' ');
  15. $c_entryGS = mysql_num_rows($entryGS);
  16.  
  17. if( $c_entryGS>)
  18. {
  19. $recordGS = mysql_fetch_array($entryGS);
  20. $odsw=intval($recordGS['lo']); $odsw++;
  21. $uniq=intval($recordGS['luo']);
  22. if ( isset($_COOKIE['GS']) && $_COOKIE['GS']==$hour.'-'.$day.'-'.$moth.'-'.$year )
  23. mysql_query('UPDATE `genstats` SET lo='.$odsw.', luo='.$uniq.' WHERE hour='.$hour.' && day='.$day.' && month='.$month.' && year='.$year.' ');
  24. else {
  25. setCookie( 'GS', $hour.'-'.$day.'-'.$moth.'-'.$year, time()+3600 );
  26. $uniq++;
  27. mysql_query('UPDATE `genstats` SET lo='.$odsw.', luo='.$uniq.' WHERE hour='.$hour.' && day='.$day.' && month='.$month.' && year='.$year.' ');
  28. }
  29. }
  30. else {
  31. setCookie( 'GS', $hour.'-'.$day.'-'.$moth.'-'.$year, time()+3600 );
  32. $odsw=1;
  33. $uniq=1;
  34. mysql_query('INSERT INTO `genstats` (`hour`, `day`, `month`, `year`, `lo`, `luo`) values ( '.$hour.', '.$day.', '.$month.', '.$year.', '.$odsw.', '.$uniq.')');
  35. }
  36.  
  37. ?>


Proszę o pomoc.

// przenoszę na Przedszkole, ayeo