Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]liczba rekordów spełniających warunki
f1xer
post 23.10.2009, 22:30:08
Post #1





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


Witam mam np. zapytanie:

  1. SELECT * FROM users WHERE `name` LIKE "%pa%" LIMIT 0,30

i chciałbym pobrać te 30 rekordów jednocześnie pobierając informację o liczbie wszystkich rekordów (np. 65) które spełniają ten warunek. Czego powinienem użyć questionmark.gif


--------------------
Pomogłem? wyraź to i kliknij "Pomógł"
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
marcio
post 23.10.2009, 22:33:28
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Nie rozumiem chcesz pobrac 30 rekordow spelniajacyh warunek where i zarazem liczbe lacznych rekordow w danej tabeli?


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Meares
post 23.10.2009, 22:37:26
Post #3





Grupa: Zarejestrowani
Postów: 102
Pomógł: 13
Dołączył: 16.10.2009
Skąd: Łódź

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


  1. $query = mysql_query('SELECT * FROM users WHERE `name` LIKE "%pa%" LIMIT 0, 30');
  2. $fetched = mysql_fetch_assoc($query);
  3. $num = mysql_num_rows($query);
  4.  
  5. /*
  6. * Jest pułapka!
  7. * $num zawiera tablicę, a nie jakby się mogło wydawać ilość rekordów, tę liczbę zawiera zerowy index tablicy ($num[0]).
  8. */


--------------------
manual mmocenter
Nie pomagam na PW!
Go to the top of the page
+Quote Post
marcio
post 23.10.2009, 22:39:15
Post #4





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat(Meares @ 23.10.2009, 23:37:26 ) *
[PHP] pobierz, plaintext
  1. $query = mysql_query('SELECT * FROM users WHERE `name` LIKE "%pa%" LIMIT 0, 30');
  2. $fetched = mysql_fetch_assoc($query);
  3. $num = mysql_num_rows($query);
  4.  
  5. /*
  6. * Jest pułapka!
  7. * $num zawiera tablicę, a nie jakby się mogło wydawać ilość rekordów, tę liczbę zawiera zerowy index tablicy ($num[0]).
  8. */
[PHP] pobierz, plaintext


Jesli chodzi o to co podal kolega wyzej to lepiej to robic w zapytaniu sql:


  1.  
  2. SELECT count(id) AS allusers, users.* FROM users WHERE `name` LIKE "%pa%" LIMIT 0,30
  3.  


Ten post edytował marcio 23.10.2009, 22:39:32


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
f1xer
post 23.10.2009, 22:42:28
Post #5





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


Cytat
Nie rozumiem chcesz pobrac 30 rekordow spelniajacyh warunek where i zarazem liczbe lacznych rekordow w danej tabeli?


Tak właśnie o to chodzi, tyle że liczbę wszystkich rekordów spełniających ten warunek.


--------------------
Pomogłem? wyraź to i kliknij "Pomógł"
Go to the top of the page
+Quote Post
Meares
post 23.10.2009, 22:47:15
Post #6





Grupa: Zarejestrowani
Postów: 102
Pomógł: 13
Dołączył: 16.10.2009
Skąd: Łódź

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


No to dostałeś już dwie odpowiedzi. smile.gif Ta kolegi marcio, jest lepsza.


--------------------
manual mmocenter
Nie pomagam na PW!
Go to the top of the page
+Quote Post
f1xer
post 23.10.2009, 22:50:32
Post #7





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


mysql_num_rows($query); zwraca mi 30 czyli de facto, liczbę z limitu (warunek spełnia ponad 100 wpisów), a druga podpowiedz zwraca mi tylko jeden rekord :/ (chodzi o to zapytanie z count)


--------------------
Pomogłem? wyraź to i kliknij "Pomógł"
Go to the top of the page
+Quote Post
marcio
post 23.10.2009, 23:01:04
Post #8





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Zrob print_r() i pokaz mi ile ci zwraca jak nie to cos sie wykombinuje na sql az tak sie nie znam.

Jak nie to count(id) zamien na count(*)


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Meares
post 23.10.2009, 23:03:47
Post #9





Grupa: Zarejestrowani
Postów: 102
Pomógł: 13
Dołączył: 16.10.2009
Skąd: Łódź

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


Mi się widzi, że będziesz się musiał JOINami pobawiać.


--------------------
manual mmocenter
Nie pomagam na PW!
Go to the top of the page
+Quote Post
f1xer
post 23.10.2009, 23:04:57
Post #10





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


count(*) nic nie zmienia, print_r zwraca tablicę tylko z pierwszym wierszem ale kolumna allusers przechowuje dobrą wartość (czyli 124) tylko że nie ma pozostały 29 wierszy z danymi.

Z joinami powiadasz ? zapytanie jest bardziej rozbudowane niż w temacie generalnie łączy ponad 12 tabel i nie widzi mi się wykonywać go 2 razy przy tym drugi raz bez limit tylko po to żeby dostać całkowitą liczbę rekordów, ale jeżeli nie będzie innego wyjścia.......

Ten post edytował f1xer 23.10.2009, 23:06:37


--------------------
Pomogłem? wyraź to i kliknij "Pomógł"
Go to the top of the page
+Quote Post
marcio
post 23.10.2009, 23:07:13
Post #11





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Czekaj czekaj juz sie pogubilem to wkoncu co teraz brakuje?.

Jak nie to zaraz odpale mysql i ci zapodam 



--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Meares
post 23.10.2009, 23:07:41
Post #12





Grupa: Zarejestrowani
Postów: 102
Pomógł: 13
Dołączył: 16.10.2009
Skąd: Łódź

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


  1. SELECT COUNT(`users`.*) AS 'allusers' AND `users`.* FROM `users` WHERE `name` LIKE "%pa%" LIMIT 0, 30


Ale nic nie obiecuje.

Ten post edytował Meares 23.10.2009, 23:08:43


--------------------
manual mmocenter
Nie pomagam na PW!
Go to the top of the page
+Quote Post
f1xer
post 23.10.2009, 23:18:03
Post #13





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


zobacz ma być tak daje zapytanie z limit 30 czyli oczekuje tablicy 30 rekordów, ale chce też dostać informację o wszystkich rekordach. a jak robię count to owszem dostaje informację o tym ile jest tych rekordów ale nie dostaje tych 30 regordów.


--------------------
Pomogłem? wyraź to i kliknij "Pomógł"
Go to the top of the page
+Quote Post
marcio
post 23.10.2009, 23:22:03
Post #14





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Hmm jedyne co mi przychodzi do glowy to:

  1.  
  2. SELECT count(id) AS allusers, * FROM users WHERE `name` LIKE "%pa%" LIMIT 0,30
  3.  


  1.  
  2. SELECT count(id) AS allusers FROM users WHERE `name` LIKE "%pa%" UNION SELECT * FROM users WHERE `name` LIKE "%pa%" LIMIT 0,30
  3.  


mam nadzieje ze nie napisalem zadnej herezji biggrin.gif ale gram w cs'a



--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
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: 14.08.2025 - 04:37