Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]podzapytanie: paginacja + sortowanie po kolumnach
Forum PHP.pl > Forum > Przedszkole
kotek2185
Witam, mam tabelę pobieraną z bazy, mam stronicowanie oraz sortowanie po kolumnach. I to wszystko śmiga. Chciałbym uzyskać efekt sortowania ale tylko w obrębie danego parta. Wygooglałem, że należy zastosować (można zastosować) podzapytanie. Tylko nie bardzo wiem jak się do tego zabrać? Mam takie zapytanie:

  1. SELECT * FROM $tbl_name
  2.  
  3. ORDER BY $orderBy $dir
  4.  
  5. LIMIT $start, $limit


I w tym momencie poprzez
  1. <a href="indeks.php?page=glowna2&part=<?php echo $part?>&orderBy=nazwa_ulicy&dir=<?php echo $nDir?>">Adres</a>
w prosty sposób sortuje mi dane, ale na całości zbioru. Jak to ugryść?
b4rt3kk
Najlepiej jakbyś użył jakiegoś pluginu jQuery (jeśli chodzi o samo sortowanie porcji wyników).

http://www.tripwiremagazine.com/2012/05/jq...rt-plugins.html

Oczywiście możesz też zapisać wyniki (albo np. same id) na danej stronie i przeprowadzić mniej więcej takie sortowanie:

  1. $id = array(); // tablica wyników z danej strony
  2. $subSort = 'costam DESC';
  3.  
  4. $query = "SELECT * FROM tabela WHERE id IN (".implode(',', $id).") ORDER BY {$subSort}";


wtedy w $_GET musiałbyś przekazywać dodatkowy argument subSort (oprócz domyślnych).

kotek2185
Chyba za dużo zabawy z jquery i z Twoim rozwiązaniem chociaż na pewno jak nic nie wymyśle to je zastosuje. Znalazłem stary wątek:

http://forum.php.pl/index.php?showtopic=104815

Może ktoś coś rozwinąć na ten temat? Czy da się w ten sposób uzyskać ww efekt? czy nie kombinować zastosować sposób kolegi b4rt3kk
b4rt3kk
Cytat(kotek2185 @ 5.11.2012, 19:20:53 ) *
Chyba za dużo zabawy z jquery i z Twoim rozwiązaniem chociaż na pewno jak nic nie wymyśle to je zastosuje. Znalazłem stary wątek:

http://forum.php.pl/index.php?showtopic=104815

Może ktoś coś rozwinąć na ten temat? Czy da się w ten sposób uzyskać ww efekt? czy nie kombinować zastosować sposób kolegi b4rt3kk


Jednym zapytaniem:

  1. SELECT * FROM $tbl_name WHERE id IN (SELECT id FROM $tbl_name ORDER BY $orderBy $dir LIMIT $start, $limit) ORDER BY $subOrder LIMIT $subLimit


Tylko niestety to nie zadziała w MySQL.
kotek2185
a czemu nie zadziała? tak poczytałem o tym i wydawać by się mogło że by śmigało...

Wracając do rozwiązania b4rt3kk to jak wrzucić ID które znajdują się na danej strony do tablicy?
b4rt3kk
Cytat(kotek2185 @ 5.11.2012, 21:44:03 ) *
a czemu nie zadziała? tak poczytałem o tym i wydawać by się mogło że by śmigało...

Wracając do rozwiązania b4rt3kk to jak wrzucić ID które znajdują się na danej strony do tablicy?


Ad. 1. MySQL nie przetworzy podzapytania, które jest ograniczone LIMIT.

Ad. 2. Zwyczajnie, zapytanie które przedstawiłeś w pierwszym poście generuje pewną liczbę wyników ograniczoną LIMIT. Właśnie to wrzucasz do osobnej tablicy.



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.