Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Paginacja literowa
_tomek
post 2.06.2012, 18:57:13
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 31.05.2012

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


Hej,

chcę zrobić paginację literową, wyglądającą mniej więcej tak:
--A--
Adam
Andrzej
--B--
Bartek
Bronek
itd.

Mam zapytanie SQL wyciągające dane i wydzielające pierwszą literę:
  1. SELECT LEFT(platform,1) AS firstletter, id, platform FROM platforms ORDER BY platform
i dwa problemy smile.gif Pierwszy to taki, że w przypadku dwóch i więcej wpisów na tę samą literę, pojawia się tyle samo "pierwszych liter". Chciałbym to zgrupować. Ale grupowanie w zapytaniu odpada - wtedy pobiera tylko jeden wiersz i tyle. Mój drugi problem to uzyskanie pokazanej na początku postu formy. Chciałem to zrobić foreach'em, czyli
  1. foreach($platform as $plat) {
  2. echo $plat->firstletter;
  3. }

ale wtedy nie dość, że problem pierwszy się uwidacznia, to za cholerę nie wiem, jak pobrać z tablicy tylko wpisy odpowiadające danej literze (eee, ktoś to rozumie? tongue.gif). Mój jedyny pomysł to podzapytania, tj puszczenie najpierw w SQL 'GROUP BY firstletter', potem foreach i w tym foreachu jeszcze jedno zapytanie z 'LIKE $letter%'. Ale to wyjdzie tyle zapytań, ile liter, a to chyba nie jest dobre wyjście.

Pomysły?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post 2.06.2012, 19:03:52
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Czy nie wygodniej Ci będzie pogrupować te rekordy już po stronie PHP?

1. Pobierasz posortowane.
2. Każdy z rekordów dopisujesz jako kolejny element wcześniej utworzonej tablicy (gdzie klucze to litery, a wartości to tablica z rekordami).
3. W momencie wyświetlania:
  1. foreach ($list as $letter => $platforms) {
  2. echo $letter;
  3.  
  4. foreach ($platforms as $platform) {
  5. echo $platform->getId();
  6. }
  7. }
Go to the top of the page
+Quote Post

Posty w temacie


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 - 20:15