Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zliczanie rekordów
Forum PHP.pl > Forum > Bazy danych > MySQL
Droopy
witam wszystkich, znowu mam problemik...
mam bazę danych, w niej tabelę w której zapisuję statystyki odwiedzin, które składaja się z czasu odwiedzin, na jakiej stronie i przeglądarki użytkownika, czyli może to tak wyglądać

1086455831|Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)|index
1086453903|Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)|ofirmie
1086453900|Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)|oferta
1086451203|Mozilla/4.61 (Win98; I) |oferta

i teraz chodzi mi o jakiś szybki sposób, aby zliczyć przeglądarki, czyli żeby wyświetliło

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1): 3
Mozilla/4.61 (Win98; I): 1

wiem, że można dać do zapytania 'WERE przegladarka = "Mozilla/4.61 (Win98; I) "' ale jak pojawi się jakaś nowa to jej nie będzie zliczał, więc chcę aby skrypt sam sprawdzał jakie są rodzaje i podawał ile jest każdej z nich

z góry dziękuję za pomoc
mike
Wydaje mi sie że to zadziała, nie jestem pewien bo pisane z głowy.
  1. SELECT browser, COUNT(*) AS count FROM downloads
Droopy
Cytat
Wydaje mi sie że to zadziała, nie jestem pewien bo pisane z głowy.
[sql:1:40394bbe48]
SELECT browser, COUNT(*) AS count FROM downloads
[/sql:1:40394bbe48]

nie działa:(
browser zmieniłem na przegladarka (bo tak jest u mnie w tabeli)
downloads zmieniłem na licznik (taka nazwa tabeli)
count nie zmieniałem, bo nie wiem do czego to...
i pisze, że nie może wykonać zapytania (znaczy wykonuje funkcję on die() )
mike
Podrzuć "kawałek" kodu , którym wyświetlasz dane z tabeli to może będzie dało się coś zrobić. :wink:
Droopy
[php:1:c43b43f9b4]<?php
$sql="SELECT przegladarka, COUNT(*) AS count FROM licznik";
$wynik = mysql_query($sql) or die("Nie można wykonać zapytania");
?>[/php:1:c43b43f9b4]
i to polecenie się nie wykonuje sad.gif
tabela nazywa się licznik, ma pola: czas, przegladarka, strona
mike
A spróbuj tak:
  1. SELECT przegladarka, COUNT(*) FROM licznik
Droopy
tak też nie działa
mike
To niemożliwe. W takim razie błąd jest gdzieś indziej. Sprawdź czy w ogóle jakieś zapytanie ci działa. Możesz mieć błąd gdzieś wcześniej. Daj cały skrypt.
Droopy
[php:1:5b62f5a0a6]<?php

$connection = mysql_connect("localhost", "login", "haslo") or die("Nie można nawiązać połączenia z serwerwm");
$db = mysql_select_db("yamaha", $connection) or die("Nie można wybrać bazy danych");

$sql = "SELECT * FROM licznik WHERE gdzie = "index"";
$wynik = mysql_query($sql) or die("Nie można wykonać zapytania 1");
$total = mysql_num_rows($wynik);
echo "Wszystkich: $total<br>";

$sql="SELECT przegladarka, COUNT(*) FROM licznik";
$wynik = mysql_query($sql) or die("Nie można wykonać zapytania 2");
?>[/php:1:5b62f5a0a6]
i wyświetla się wszystkich, a po tym: "Nie można wykonać zapytania 2"
mike
Znalazłem błąd. To był mój błąd sad.gif . Klauzula order by jest wymagana przy COUNT(*). Tak wywnioskowałem z manuala.
Counting Rows
  1. SELECT przegladarka, COUNT(*) FROM licznik ORDER BY przegladarka;

Sprawdź to.
Droopy
Cytat
...Klauzula order by jest wymagana przy COUNT(*). ...

z order by nie działa, ale ja też zajżałem pod ten link i działa mi z group by, ale teraz nie rozumiem innej rzeczy - w jakiej formie są zwracane te dane? po daniu echo $wynik dostałem Resource id #27 i kompletnie nie wiem co to oznacza...
mike
No pewnie , jakiś dzisiaj jestem zamotany. Oczywiście że chodzi o group by.
Wyniki możesz wyciągnąć tak:
  1. <?php
  2. //...
  3. $resResult = mysql_query('SELECT przegladarka, COUNT(*) FROM licznik GROUP BY przegladarka');
  4. while( $arrRow = mysql_fetch_array($resResult) )
  5. {
  6. echo $arrRow['przegladarka'].' - '.$arrRow['COUNT(*)'];
  7. }
  8. //...
  9. ?>
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.