Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Stronicowanie w mySQL
Forum PHP.pl > Forum > Bazy danych > MySQL
ketna
Witam,
potrzebuję zrobić podział wyników na strony. Mogę użyć jedynie sql-a.
Na razie mam coś takiego niestety nie działa:

Kod
SET @i=0 SELECT CEIL((@i:=COUNT(id)+1)/10) AS strona FROM product GROUP BY strona


Bardzo proszę pomoc.
Pozdrawiam
mhs
przykładowe zapytanie może wyglądać tak:
  1. SELECT
  2. *
  3. FROM nazwaTabeli WHERE warunki
  4. ORDER BY sortowanie
  5. LIMIT od, ile


Generalnie zapoznaj się z klauzulą LIMIT.
ketna
Chciałeś mi wyjaśnić jakie są ogólne zasady budowania zapytania?

LIMIT nie ma tu nic do rzeczy, bo problem polega na tym, żeby zapytanie wygenerowało tyle wyników ile stron potrzeba, żeby wyświetlić wszystkie wyniki.

Przykładowo jeśli liczba wyników = 25 (COUNT(id)), a chcemy mieć 10 wyników na stronie to dzielimy 25/10=2,5 i wynik zaokrąglamy w górę do liczby całkowitej (3) i mamy w ten sposób liczbę stron. Teraz wypadałoby wygenerować linki do trzech stron i tego właśnie nie potrafię zrobić (do tego ma służyć zmienna @i).
nospor
@ketna a co ty za herezje wypisujesz? Ilosc stron to w php policz wg wzotu co podales. dzielenie i zaokrąglenie to jedna linijka. na grzyba ci tu sql? z sql pobierasz liczbe wszystkich wyników i wyniki co cie aktualnie interesują.

Do stronicowania masz klasy:
http://forum.php.pl/index.php?showtopic=35498
http://forum.php.pl/index.php?showtopic=35864

pozatym wpisz se do wyszukiwarki: stronicowanie
i znajdziej full skryptow
mhs
Cytat
Chciałeś mi wyjaśnić jakie są ogólne zasady budowania zapytania?

Tak, chciałem wskazać Ci jakiego typu ma być zapytanie SQL, dzięki któremu można pobrać część wyników z bazy danych.

Cytat
LIMIT nie ma tu nic do rzeczy

No właśnie, że ma, gdyż dzięki temu pobierasz część wyników zapytania.

Cytat
bo problem polega na tym, żeby zapytanie wygenerowało tyle wyników ile stron potrzeba, żeby wyświetlić wszystkie wyniki

Jeżeli będziesz miał LIMIT to wybierze część tych wyników, dokładnie tyle ile będziesz chciał mieć wyników na jednej stronie.


Cytat
Przykładowo jeśli liczba wyników = 25 (COUNT(id)), a chcemy mieć 10 wyników na stronie to dzielimy 25/10=2,5 i wynik zaokrąglamy w górę do liczby całkowitej (3) i mamy w ten sposób liczbę stron.

No ok. Zrealizuj to w php.

Cytat
Teraz wypadałoby wygenerować linki do trzech stron i tego właśnie nie potrafię zrobić

No to w czym problem?
  1. <a href="skrypt.php?strona=1">strona 1</a>
  2. <a href="skrypt.php?strona=2">strona 2</a>
  3. <a href="skrypt.php?strona=3">strona 3</a>

Musisz tylko troszeczke pokombinować w php by uzyskać taki wynik i wszystko.
ketna
Przypominam, że nie mogę użyć php, mam doczynienia z zakodowanym .cgi i jedyne co mogę zrobić to napisać całość w sql.

Do mhs limit nie ma nic do rzeczy ponieważ jest to oczywiste, że wstawię tam sobie później zmienną, powtarzam potrzebuję pętli, która będzie mi zwracać tyle linków do stron, na ile stron dzielą się wyniki zapyania.
nospor
sorki ze pytam:
a jak chcesz wygenerowac linki skoro nie masz php?
tak sie pytam bo nie kumam (ciezki dzien dzis mam)
mhs
Cytat
Przypominam, że nie mogę użyć php, mam doczynienia z zakodowanym .cgi i jedyne co mogę zrobić to napisać całość w sql.

A gdzie o tym wspominałeś wcześniej, że o tym przypominasz?

W takiej sytuacji nie mam za bardzo pomysłu jak coś takiego wykonać.
escaflowne
Czy wynikiem tego zapytania ma być liczba, mówiąca ile stron potrzeba na wyświetlenie wszystkich wyników, zakładając, że na jednej stronie mogą znaleźć się maksymalnie x rekordy?
ketna
mhs - w temacie
nospor - linki wygeneruję, mogę tę zmieną wstawić, ale całe działanie musi przebiegać w sql

Przykład1:

Jeśli

mamy 25 wyników, czyli potrzebne są 3 strony

to

otrzymujemy odpowiednią liczbę linków:

strona 1, strona 2, strona 3

Przykład2:

Jeśli

mamy 37 wyników, czyli potrzebne są 4 strony

to

otrzymujemy odpowiednią liczbę linków:

strona 1, strona 2, strona 3, strona 4

---
"CEIL((@i:=COUNT(id)+1)/10)" - zmienna, odowiedzialna za generowanie liczby linków.
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.