![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 19.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
Robie prosta wyszukiwarke, w zapytaniu mam limit, gdzie $ile to ilosc wynikow per site, a $od zwieksza sie na podstawie linku na stronie (aby tworzyc podstrony musze uzyc drugiego zapytania, query2, identycznego jak ponizsze, lecz bez limitu i wtedy uzyc np. mysql_num_rows)
[sql:1:0771f13432] $query = mysql_db_query("SELECT * FROM db_news where $content like '%$wyrazenie%' order by $sort2 LIMIT $od,$ile"); [/sql:1:0771f13432] Pytanie: Czy da sie to zrealizowac w jednym zapytaniu, bez koniecznosci uzywania drugiego tylko po to, aby wiedziec ile jest wszystkich wynikow na stronie (i dzieki temu np. zrobic podstrony) ? Wiem, ze dla wersji 4.0 Mysqla dziala funkcja SQL_CALC_FOUND_ROWS, ale co zrobic w przypadku starszych ? Da sie to jakos rozwiazac w jednym zapytaniu (moze count ?) lub programistycznie ? Zaznaczam, ze jestem poczatkujacym. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 384 Pomógł: 0 Dołączył: 3.04.2003 Skąd: Chorzow Ostrzeżenie: (0%) ![]() ![]() |
prawidlowe rozwiazanie jest takie:
do zapytania dodaje sie opje SQL_CALC_FOUND_ROWS: [sql:1:890e2bbe5e] SELECT SQL_CALC_FOUND_ROWS * FROM tabele..... itd. LIMIT x,y [/sql:1:890e2bbe5e] Wykonuje sie to zapytanie, po czy wysyla sie nastepujace zapytanie: [sql:1:890e2bbe5e] SELECT FOUND_ROWS() [/sql:1:890e2bbe5e] Ktore zwraca ilosc znalezionych wierszy w poprzednim zapytaniu z pominieciem klauzuli LIMIT. Drugie zapytanie takie same jak pierwsze tylko bez limitu jest o tyle beznadziejne, ze zapytanie moze byc dosc skomplikowane z duza iloscia sklejen, liczonych wyrazen itp. powtorzenie ktorego na pewno nie przyspieszy dzialania skryptu (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) PS. to podswietlenie juz po prostu zalamuje... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 20:50 |