Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]sortownie wyników za pomocą form select
Forum PHP.pl > Forum > Przedszkole
Rufus_84
Witam.
Pobieram wyniki z bazy danych i chciałbym, aby byla możliwośc ich sortowania na cztery sposoby. Napisałem taki kod:

<form method="get" id="sort_form" action=""> <fieldset>
<label style="width:50px;">Sortuj:</label>
<select id="listSort" name="sb">
<option value="tyt_asc" selected="selected">Tytułami A-Z</option>
<option value="tyt_desc" >Tytułami Z-A</option>
<option value="aut_asc" >Autorami A-Z</option>
<option value="aut_desc" >Autorami Z-A</option>
</select>

<button type="submit">Sortuj</button>
</fieldset></form>';

oraz php:

$sel = $_GET['sb'];
if($sel =='tyt_asc'){
$order = 'Tytul ASC';
}else if($sel =='tyt_desc'){
$order = 'Tytul DESC';
}else if($sel =='aut_asc'){
$order = 'Autor ASC';
}else if($sel =='aut_desc'){
$order = 'Autor DESC';
}else{
$order = 'Tytul ASC';
}

Problem jest taki, że nie zmienia się rodzaj sortowania mimi, że w adresie url się zmienia.
Z góry dziekuję za pomoc.

Pozdrawiam
Rafał

$_GET['sb'] nie pobiera wartosci, gdyz jak wpisze echo $_GET['sb'] nic si enie wyswietla. weie ktos dlaczego tak moze sie dziać?
trueblue
Formularz i kod PHP są w odrębnych plikach czy w jednym?
Rufus_84
w jednym
trueblue
A co masz w całej tablicy $_GET ( print_r($_GET); ) ?
Rufus_84
nie rozumiem; nie mam tablicy $_GET...
Turson
Cytat
$_GET['sb'] nie pobiera wartosci, gdyz jak wpisze echo $_GET['sb'] nic si enie wyswietla. weie ktos dlaczego tak moze sie dziać?

Ciekawe bo u mnie działa.

Masz tablicę, jest to $_GET. Wpisz print_r($_GET); aby ją zobaczyć
Rufus_84
Array ( [id] => develop ) czyli strona na ktorej sie znajduje formularz

właśnie zauważyłem, że jak stworze nowy plik php z samym formularzem to działa. czy moze cos blokowac działanie $_GET?
trueblue
Na pewno obsługujesz prawidłowy formularz?
W formularzu, który testujesz/podałeś nie ma pola name="id", więc nie wiem jakim cudem dostajesz w tablicy $_GET tą zmienną.
Rufus_84
no właśnie też nie mam pojęcia. zamiast pobierać name="sb" pobiera id z index.php?id="develop"...
trueblue
  1. <?php
  2. ?>
  3. <form method="get" id="sort_form" action=""> <fieldset>
  4. <label style="width:50px;">Sortuj:</label>
  5. <select id="listSort" name="sb">
  6. <option value="tyt_asc" selected="selected">Tytułami A-Z</option>
  7. <option value="tyt_desc" >Tytułami Z-A</option>
  8. <option value="aut_asc" >Autorami A-Z</option>
  9. <option value="aut_desc" >Autorami Z-A</option>
  10. </select>
  11.  
  12. <button type="submit">Sortuj</button>
  13. </fieldset></form>
  14.  
  15. <?php
  16.  
  17. $sel = $_GET['sb'];
  18. if($sel =='tyt_asc'){
  19. $order = 'Tytul ASC';
  20. }else if($sel =='tyt_desc'){
  21. $order = 'Tytul DESC';
  22. }else if($sel =='aut_asc'){
  23. $order = 'Autor ASC';
  24. }else if($sel =='aut_desc'){
  25. $order = 'Autor DESC';
  26. }else{
  27. $order = 'Tytul ASC';
  28. }
  29. print_r($_GET);
  30. ?>

Podmień na chwilę index.php powyższym i zobacz, co wtedy wyświetla.
Rufus_84
No własnie teraz działa. wyswietla tablice sb

Array ( [sb] => aut_asc )


tylko dlaczego? moze to miec zwiazek z paginacją? lub tworzeniem ladnych urli z htaccess?

Właściwie to wejdz na strone www.e-motywacja.net i sam zobacz. wejdz w pierwsza kategorię ksiazek i ebookow

do adresu url dodaje rodzaj sortowania ale nie pobiera go
trueblue
Regułki w .htacces gubią query string.
Musiałbyś dodać do nich parametr QSA.
Rufus_84
Masz rację działa!! ale jak przerzucę na drugą stronę wyników to resetuje sortowanie. Wiesz może jak temu zapobiec?
trueblue
Musisz dopisywać ten parametr w linkach paginacji.
Rufus_84
dobra super. Wszystko działa

WIELKIE DZIEKI!!!
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.