Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][sql]Sortowanie po kliknięciu
Forum PHP.pl > Forum > Przedszkole
ksiegol
Witam

Mam na stronie taką tabelkę, która po pobraniu danych z bazy sortuje je według nazwiska, a następnie w pętli wyświetla kolejne wiersze. Chciałbym jednak wprowadzić opcję aby po kliknięciu na odpowiedni element z wiersza nagłówkowego tabeli, zmianiała się zasada sortowania. Jak to zrobić, aby zmiany realizowane były w ramach wyświetlonej już strony? Jak na razie mam jedynie pomysł przygotowania oddzielnych plików php z innymi zasadami sortowania, które otwierałby się po kliknięciu na odpowiedni nagłówek.

z góry dzięki za pomoc

Adam
John
Nie musisz przygotowywać oddzielnych plików, możesz to zrobić w ramach zapytania.
Po prostu nagłówek który ma być kliknięty musi przenosić typ sorowania np.
  1. <a href=mojastrona.php?sortowanie=nazwisko>

a kod zapytania wygląda wtedy tak :
  1. SELECT * FROM mojaTabela ORDER BY '$sortowanie' DESC


w ramach jednej strony, to ja rozumiem bez odświeżania, wtedy musisz to zawrzeć w javascripcie.
plurr
a ja sie dolacze do tematu i zapytam o takie "podwojne sortowanie" jak np w skrzynkach mailowych. A mianowicie:

mamy tabele:
imie/ nazwisko/ temat / data /

Chce teraz posortowac wyniki wzgledem daty:

  1. SELECT * FROM mojaTabela ORDER BY 'data' DESC


Teraz chce jeszcze raz kliknac na naglowek 'data' aby posortowac znow, ale w odwrotnej kolejnosci:

  1. SELECT * FROM mojaTabela ORDER BY 'data' ASC


Problem w tym, jak sprawdzi ze obecnie jest DESC i chcialbym ASC ? Znalazlem pewien kod, jednak to js, a jak to zrobic cos takiego w php ?

  1. <?php
  2. function changeSort(s) {
  3. if (currentSort == s)
  4. currentSortOrder = currentSortOrder == "ASC" ? "DESC" : "ASC";
  5.  else { currentSortOrder = "ASC";
  6. if (currentSort != "")
  7. $(currentSort + "Sort").style.fontWeight = "normal";
  8. $(+ "Sort").style.fontWeight = "bold"; 
  9. } currentSort = s;
  10. changePage(0);
  11. }
  12. ?>



wlasnie, chodzi mi o ta funkcje 'currentSortr' czy w php jest jakis odpowiednik ?
drPayton
Analogicznie jak napisał John:
  1. <a href=mojastrona.php?sortowanie=nazwisko&amp;kierunek=ASC>

a w php:
  1. <?php
  2. $sortOrder = ($_GET['kierunek']) ? $_GET['kierunek'] : 'DESC';
  3. ?>


A najlepiej AJAX'em. Na stronie advAjax jest gotowy przykład:
advAjax - strona główna
Na samym dole, link: PHP Solutions - Przykład 2. - Stronicowanie danych
plurr
taaak, zrobilem tak samo i gitara biggrin.gif guitar.gif

Jednakze ciekawiej to wyglada w ajaxie, widzialem juz kiedys ten przyklad, ale za duzo roboty (moje pojecie o ajaxie jest bliskie zeru) tongue.gif
drPayton
Dużo roboty - ale:
1. Na tym przykładzie uczyłem się AJAX'a biggrin.gif
2. Dużo frajdy
3. Cudny efekt winksmiley.jpg
No chyba, że to jakaś bardzo pilna robota, to wtedy faktycznie
Arrowb
witam,

a ja polecam mintAjax, sortowanie tabeli to minuta roboty winksmiley.jpg

http://www.mintajax.pl/?guide#kontrolki_tabele
plurr
Cytat(drPayton @ 2.08.2007, 19:21:36 ) *
Dużo roboty - ale:
1. Na tym przykładzie uczyłem się AJAX'a biggrin.gif
2. Dużo frajdy
3. Cudny efekt winksmiley.jpg
No chyba, że to jakaś bardzo pilna robota, to wtedy faktycznie


nie da sie ukryc, efekt cudny smile.gif W sumie to nie jest jakas pilna robota, mam miesiac czasu na prosty systemik - na moje umiejetnosci, wiec chyba sobie poczytam jakies poradniki... smile.gif

Cytat(Arrowb @ 2.08.2007, 19:51:11 ) *
witam,

a ja polecam mintAjax, sortowanie tabeli to minuta roboty winksmiley.jpg

http://www.mintajax.pl/?guide#kontrolki_tabele



O wlasnie, elegancka stronka, fajnie wytlumaczone, wielkie dzieki smile.gif
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.