Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Liczenie dziennych wizyt
Forum PHP.pl > Forum > Bazy danych
slawo
Witam,

moja tabela składa się z pól: id, data, czas, ip

w pliku index.php jest zapytanie, które dodaje każde wejście na stronę, dodajac date, czas i ip wchodzacego
chce napisac 2 zapytania, ktore beda liczyly; pierwszy wszystkie wejscia w danym dniu, drugie; unikalne wejscia w jednym dniu (po adresie Ip)


  1. $stat_wszystkie = mysql_query("SELECT COUNT(*) as stat_w FROM wejscia WHERE data='$data'");
  2. $sw = mysql_fetch_array($stat_wszystkie, MYSQL_ASSOC);
  3.  
  4. $stat_unikalne = mysql_query("SELECT COUNT(*) as stat_u FROM wejscia WHERE data='$data'" AND [questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif?] );
  5. $su = mysql_fetch_array($stat_unikalne, MYSQL_ASSOC);


pierwsze zapytanie liczy wszystkie wejscia w danym dniu. natomiat nie wiem co dopisac w drugim zapytaniu tak aby liczylo po adresach IP tzn jest 5 wejsc z jednego adresu a liczy tylko raz.


pomoze ktos?
erix
DISTINCT albo GROUP BY.
slawo
czyli jak powinno wygladac 2 zapytanie bo cos mi nie chce dzialac :/


  1. $licz_adresy= mysql_query("SELECT DISTINCT ip FROM wejscia")
  2. or die('Błąd zapytania');
  3.  
  4. while($la = mysql_fetch_assoc($licz_adresy)) {
  5.  
  6. echo "".$la['ip']."";
  7.  
  8. $stat_unikalne = mysql_query("SELECT COUNT(*) as stat_u FROM wejscia WHERE ip='".$la['ip']."'");
  9. $su = mysql_fetch_array($stat_unikalne, MYSQL_ASSOC);
  10.  
  11. }



hmm dobrze kombinuje? cos nei dziaala
erix
Cytat
hmm dobrze kombinuje? cos nei dziaala

"Bo tak".




--
ani Twoje zdanie nic konkretnego nie mówi, ani moje.
slawo
no przeciez napisalem kod powyzej. no niby pokazuje mi adresy bez powtarzania ale nie wiem jak je zliczyc;/

  1. $stat_unikalne = mysql_query("SELECT ip, COUNT(ip) AS 'stat_u' FROM wejscia GROUP BY ip");
  2. $su = mysql_fetch_array($stat_unikalne, MYSQL_ASSOC);



dalej nie dziala. co tu jest zle?
erix
Ale co oznacza dalej nie działa? Kod ja widzę, ale co robi nie tak...?

D'oh...
slawo
aaa o to Ci chodzi sorry nie skumalem... ten kod pokazuje wynik 1. a takich adresow jest akurat 5, ktore sie powtarzaja.
phpion
Pewnie źle odbierasz dane po stronie PHP. Odpal sobie samo zapytanie:
  1. SELECT ip, COUNT(ip) AS stat_u FROM wejscia GROUP BY ip;

w konsoli albo spod phpMyAdmina i zobacz czy dostaniesz prawidłowy raport.
slawo
wpisalem to w phpmyadmin i taki wynik:



http://wgrajfoto.pl/pokaz/img1210/ip968d.jpg
phpion
Bingo, czyli wyniki są poprawne. Teraz śmigasz do mysql_fetch_assoc, patrzysz na pierwszy przykład, interesuje Cię tylko zawartość między while... a zamykającym } i na tej podstawie wypisujesz sobie zwrócone dane na stronce. Proste? No pewox!
slawo
ale ja nie chce zeby mi pokazalo tak:

adres ip - ile wejsc
inny adres ip -ile wejsc
jeszcze inny ip - ile wejsc..


a moim przypadku na strone weszlo 10 roznych adresow i chce napisac takie zapytanie aby wynik byl 10.
phpion
  1. SELECT DISTINCT ip FROM wejscia;


// Edit:
Chyba znowu źle zrozumiałem :/
  1. SELECT COUNT(*) FROM wejscia GROUP BY ip;
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.