Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt statystyk
Forum PHP.pl > Forum > Przedszkole
qbejs
Witam exclamation.gif

Dziś z nudów postanowiłem napisać skrypt statystyk zliczających liczbę odwiedziń oraz pokazujący liczbę osób online. Jednak ustknałem już w momencie zliczania liczby odwiedzin. Mianowicie wybrał metode iż funkcja pobiera IP oglądającego stronę łączy się z bazą pobiera wszystko do tabeli która zawiera numery IP osób które już odwiedziły stronę i porównuje IP aktualnego odgladajacego z tymi z bazy. Jeśli jest to IP którego nie ma w bazie to dodaje nowy wpis. Funkcja pokazująca liczbe osob ktore juz odwiedzily strone poprostu zlicza libę wierszy w tabeli z numerami IP. Zerknijcie na to...

  1. <?php
  2.  
  3. function check_ip($serwer, $user, $pass, $baza, $tabela)
  4. {
  5. //Ustalam połaczenie z baza danych
  6. $sql=mysql_connect($serwer,$user,$pass);
  7.  
  8. //Statystyki
  9. $ip=$HTTP_SERVER_VARS['REMOTE_ADDR'];
  10. $check_ip="SELECT ip FROM `stat`;";
  11. $check_ip_wykonaj=mysql_query($check_ip);
  12. $check_ip_tabela=mysql_fetch_array($check_ip_wykonaj);
  13. do
  14.  {
  15.  $dodaj_ip="INSERT id, ip INTO `stat` (`id`, `ip`) VALUES ('','".$ip."');";
  16.  }
  17. while ($check_ip_tabela[0] <> $ip);
  18. }
  19.  
  20. function stat($serwer, $user, $pass, $baza, $tabela)
  21. {
  22. //Ustalam połaczenie z baza danych
  23. $sql=mysql_connect($serwer,$user,$pass);
  24.  
  25. //Pobieram ilosc odwiedzin
  26. $zapytanie="SELECT `ip` FROM `stat`";
  27. $wykonaj=mysql_query($zapytanie);
  28. $stat=mysql_num_rows($wykonaj);
  29.  
  30. print $stat;
  31.  
  32. }
  33.  
  34.  
  35. ?>


Mam jeszcze pytanie. Jak można sprawdzać czy użytkonik jest jeszcze aktywny na strone...Chodzi mi tu o funckję to sprawdzania statusu....Jak to można rozwiązać ?

Z góry dziękuję i pozdrawiam.
Kuziu
  1. <?php
  2. $result = mysql_query('SELECT id FROM visitors WHERE ip='' . $ip . ''') or die(mysql_error());
  3. $row = mysql_fetch_array($result);
  4. if($row['id'] > 0){
  5. // Byl juz wpisany
  6. }else{
  7. mysql_query('INSERT INTO visitors VALUES('''' . $ip . '')') or die(mysql_error());
  8. }
  9.  
  10. $result = mysql_query('SELECT count(id) as visits FROM visitors') or die(mysql_error());
  11.  
  12. $row = mysql_fetch_array($result);
  13.  
  14. echo('Wizyt: ' . $row['visits']);
  15.  
  16. ?>


A z iloscią online... zazwyczaj się robi że po 5 minutach wywalasz user'a z online.
qbejs
Cytat(Kuziu @ 2006-02-23 22:42:04)
  1. <?php
  2. $result = mysql_query('SELECT id FROM visitors WHERE ip='' . $ip . ''') or die(mysql_error());
  3. $row = mysql_fetch_array($result);
  4. if($row['id'] > 0){
  5. // Byl juz wpisany
  6. }else{
  7. mysql_query('INSERT INTO visitors VALUES('''' . $ip . '')') or die(mysql_error());
  8. }
  9.  
  10. $result = mysql_query('SELECT count(id) as visits FROM visitors') or die(mysql_error());
  11.  
  12. $row = mysql_fetch_array($result);
  13.  
  14. echo('Wizyt: ' . $row['visits']);
  15.  
  16. ?>


A z iloscią online... zazwyczaj się robi że po 5 minutach wywalasz user'a z online.

Więc i to nie pomogło....teraz wyrzuca mi błąd
  1. You have an error IN your SQL syntax; CHECK the manual that corresponds TO your MySQL server version FOR the RIGHT syntax TO USE near '
  2. INTO `visitors`
  3. VALUES ('', '83.28.208.8')' at line 1
Kuziu
A to dziwne bo u mnie wszystko śmiga.

Mam nadzieję że stworzyłeś tabele visitors z polami id, ip jedno typu int drugie varchar(30) czy cos takiego.

Specjalnie teraz sprawdziłem...
qbejs
Cytat(Kuziu @ 2006-02-24 01:51:32)
A to dziwne bo u mnie wszystko śmiga.

Mam nadzieję że stworzyłeś tabele visitors z polami id, ip jedno typu int drugie varchar(30) czy cos takiego.

Specjalnie teraz sprawdziłem...

nie wiem jak Ci to mogło działać smile.gif chyba ślepy jestem przecież miałeś błąd....Błąd był w linijcie z zapytaniem dodajacej ip....powinno być tak

  1. INSERT
  2. INTO `stat`
  3. (`id`,`ip`) VALUES ('', '". $ip ."')


Ale i tak dzięki smile.gif w sumie prosty problem ale po 3 piwach i o 12 w nocy się wydwał troszkę trudniejszy. Co do userów online, to chciałbym jakiś wiarygopdniejszy system...Nie wiecie jak można sprawdzić aktywność usera ?
strife
Cytat(qbejs @ 2006-02-24 10:40:35)
Nie wiecie jak można sprawdzić aktywność usera ?

Kiedyś napisałem sobie pewną klasę do tego http://forum.php.pl/index.php?showtopic=28296, może Ci się przyda. winksmiley.jpg

Pozdrawiam!
qbejs
Cytat(strife @ 2006-02-24 10:32:13)
Cytat(qbejs @ 2006-02-24 10:40:35)
Nie wiecie jak można sprawdzić aktywność usera ?

Kiedyś napisałem sobie pewną klasę do tego http://forum.php.pl/index.php?showtopic=28296, może Ci się przyda. winksmiley.jpg

Pozdrawiam!

Dzięki wielkie jestem uratowany, choć powiem Ci ze powoli dochodziłem do podobnego sposobu co Ty smile.gif

EDIT:

Postanowiłem torszkę pogłówkować i samemu rozwiązać problem. Podaje Wam kod który odpowiada za sprawdzenie czy ip jest w bazie jesli tak to robi update time a jezeli nie ma to dodaje nowy rekord jednak cos nie hula :/ a ja juz nie wiem co...

  1. <?php
  2. //STATYSTYKI ONLINE
  3. $ip=$HTTP_SERVER_VARS['REMOTE_ADDR'];
  4. $time=time();
  5. $minutes=5*60;
  6. $result = mysql_query("SELECT ip FROM `stat_online` WHERE ip='".$ip."'") or die(mysql_error());
  7. $row = mysql_fetch_array($result);
  8. print $row['ip'];
  9. if($row['ip'] = $ip)
  10. {
  11. mysql_query("UPDATE `stat_online` SET time='".$time."' WHERE ip='".$ip."'") or die(mysql_error());
  12. }
  13. else
  14. {
  15. mysql_query("INSERT INTO `stat_online` (id, ip, time) VALUES ('', '".$ip."', '".$time."')") or die(mysql_error());
  16. }
  17. ?>
Kuziu
Widocznie w miejscu gdzie ja wpisałem \'' Ty dałęs \" Czyli zamiast 2 apostrofów Cudzysłow i dlatego mi od początku działało a Tobie nie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.