Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Stronicowanie w mySQL, stronicowanie przy użyciu wyłącznie sql
ketna
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 28.03.2005

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


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
Go to the top of the page
+Quote Post
mhs
post
Post #2





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


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.

Ten post edytował mhs 23.11.2005, 12:36:12
Go to the top of the page
+Quote Post
ketna
post
Post #3





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 28.03.2005

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


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).
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




@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


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

"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
mhs
post
Post #5





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


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.

Ten post edytował mhs 23.11.2005, 13:37:56
Go to the top of the page
+Quote Post
ketna
post
Post #6





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 28.03.2005

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


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.
Go to the top of the page
+Quote Post
nospor
post
Post #7





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




sorki ze pytam:
a jak chcesz wygenerowac linki skoro nie masz php?
tak sie pytam bo nie kumam (ciezki dzien dzis mam)


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

"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
mhs
post
Post #8





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


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ć.
Go to the top of the page
+Quote Post
escaflowne
post
Post #9





Grupa: Zarejestrowani
Postów: 220
Pomógł: 0
Dołączył: 20.02.2003
Skąd: Poznań

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


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?


--------------------
Wieczność jest bardzo nudna, szczególnie pod koniec - Woody Allen
/home/env: Apache 2.2 | PHP 5.2 | MySQL 5.1 | FreeBSD 8.0 | NetBeans 6.8 | symfony 1.4
Go to the top of the page
+Quote Post
ketna
post
Post #10





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 28.03.2005

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


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.

Ten post edytował ketna 23.11.2005, 14:55:25
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 Aktualny czas: 20.08.2025 - 12:47