Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] zliczanie rekordow
lukash82
post 5.06.2006, 18:27:51
Post #1





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

Ostrzeżenie: (0%)
-----


Witam. Mam takie trywialne pytanko. Jakim poleceniem moge zliczyc ile mam rekordow w danej kolmnie w bazie. Kolumna jest auto_increment. Robilem juz cos takiego:
  1. "select MAX(numer_n) FROM news";

i takiego
  1. "select distinct count(numer_n) from news";

gdzie news to nazwa tabeli a numer_n nazwa danej kolumny w tej tabeli w ktroej chce znac ile ma rekordow w danej chwili automatycznie wpisanych. Prosze o jakas podpowiedz bo nie moge sobie z tym jakos poradzic:/ Pozdrawiam
Go to the top of the page
+Quote Post
mdco
post 5.06.2006, 18:33:31
Post #2





Grupa: Zarejestrowani
Postów: 324
Pomógł: 5
Dołączył: 14.12.2004

Ostrzeżenie: (0%)
-----


Nio, i ta druga opcja z COUNT nie działa?


--------------------
zmoderowano - rozmiar
Go to the top of the page
+Quote Post
-Gość-
post 5.06.2006, 18:39:04
Post #3





Goście







Musi zadzialac ta druga:
SELECT COUNT(nazwa_kolumny) FROM nazwa_tabeli;
Go to the top of the page
+Quote Post
lukash82
post 5.06.2006, 18:47:36
Post #4





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

Ostrzeżenie: (0%)
-----


No wlasnie nie dziala:/ Wywala tylko Resource id #3 a powinno pokazac 8 bo tyle narazie mam rekordow. No chyba, ze cos dalej z tym zle robie, mam tak:
  1. <?php
  2. $query = "select count(numer_n) from news"; 
  3. $results = mysql_query($query) or die(mysql_error());
  4. echo $results;
  5. ?>


Ten post edytował lukash82 5.06.2006, 18:48:39
Go to the top of the page
+Quote Post
skowron-line
post 5.06.2006, 18:55:08
Post #5





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


to moze skoro uzywasz php to looknij na funkcje mysql_num_rows taka moja rada
  1. <?php
  2. $query = mysql_query('SELECT login FROM users');
  3. $ile = mysql_num_rows($query);
  4. echo $ile;
  5. ?>


Ten post edytował skowron-line 5.06.2006, 19:00:52


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
-Gość-
post 5.06.2006, 18:56:31
Post #6





Goście







mysql_query zwraca resource (nie wiem jak to po polsku przetlumaczyc) do odpowiedzi bazy danych na pytanie. Tak jak kolega wyzej napisal - uzyj mysql_num_rows.
Go to the top of the page
+Quote Post
lukash82
post 5.06.2006, 19:09:52
Post #7





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

Ostrzeżenie: (0%)
-----


Ok, to zrobilem cos takiego:
  1. <?php
  2. $query = "select count(numer_n) from news";
  3. $results = mysql_query($query) or die(mysql_error());
  4. $results2 = mysql_num_rows($results) or die(mysql_error());
  5. echo $results2;
  6. ?>

ale to mi zwraca 1 tylko. Chyba cos tu przekombinowalem:/
Go to the top of the page
+Quote Post
skowron-line
post 5.06.2006, 19:12:38
Post #8





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


no przekombinowales
zrob tak
  1. <?php
  2. $query = mysql_query('SELECT login FROM news');
  3. $ile = mysql_num_rows($query);
  4. echo $ile;
  5. ?>


i tyle bez zbednego kombinowania nie robisz zliczana przez counta w zapytaniu tylko wyswietlasz liczbe zwracanych rekordow przez selecta.

->ale zakrecilem<-


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
-Gość-
post 5.06.2006, 19:13:03
Post #9





Goście







Teraz to musisz inne pytanie zadac smile.gif
Ahhh..... ok, napisze ci:
Albo tak:
  1. <?php
  2. $query = "select numer_n from news";
  3. $results = mysql_query($query) or die(mysql_error());
  4. $results2 = mysql_num_rows($results) or die(mysql_error());
  5. echo $results2;
  6. ?>

albo:
  1. <?php
  2. $query = "select count(numer_n) from news";
  3. $results = mysql_query($query) or die(mysql_error());
  4. $results2 = mysql_fetch_array($results); 
  5. echo $results2['count(numer_n)'];
  6. ?>

Co do drugiego to nie jestem na 100% pewien w jakiej formie trzeba wpisac indeks tablicy w $result2, ale jak wezmiesz print_r ($result2) to sie dowiesz, jezeli to nie bedzie dzialalo.
Go to the top of the page
+Quote Post
piotrekkr
post 5.06.2006, 20:19:22
Post #10





Grupa: Zarejestrowani
Postów: 386
Pomógł: 25
Dołączył: 28.09.2005

Ostrzeżenie: (0%)
-----


mozna jeszcze tak
  1. <?php
  2. $query='SELECT COUNT(`numer_n`) FROM `news`';
  3. $result=mysql_query($query);
  4. $result=mysql_fetch_row($result);
  5. echo $result[0];
  6. ?>


Ten post edytował piotrekkr 5.06.2006, 20:21:58
Go to the top of the page
+Quote Post
lukash82
post 5.06.2006, 20:26:30
Post #11





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

Ostrzeżenie: (0%)
-----


Oki, dziala:) Zrobilem tak jak napisal skowron-line ale dzieki wszystkim za pomoc. Pozdrawiam
Go to the top of the page
+Quote Post
nospor
post 6.06.2006, 09:22:09
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Zrobilem tak jak napisal skowron-line

To żes bardzo źle zrobil. Metoda skowrona poniera wszystkie rekordy z bazy i potem zwraca ich liczbe. I teraz pytanie: tobie chodzilo tylko o liczbe? Jesli tak to pomysl sobie. W bazie masz 1000 000 rekordow i w celu pobrania ich liczby ty pobierasz wszystkie. Do pobrania liczby sluzy wlasnie count() ktora tak ci skowron odradzal. Przeciez lepiej, by to co mogla robic baza, niech zrobi ona i niech nam zwroci tylko to co potrzebujemy bez zbednych informacji.
A jak uzyc tego count to w tym topicu juz licznie zostalo podane


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
SongoQ
post 6.06.2006, 09:28:19
Post #13





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


@nospor Nie nieraz sie zdazaja tacy co to polecaja. Przekonaja sie na wiekszych bazach. (hehehe co tam 1BG danych tez mozna przeslac tongue.gif).

A tak na powaznie to jeden z najczestrzych bledow. Polecam stosowanie count(*) dla ilosci rekordow albo count(pole) gdzie pole jest to PK.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.07.2025 - 07:52