Rufus_84
22.03.2014, 17:40:54
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
22.03.2014, 17:42:36
Formularz i kod PHP są w odrębnych plikach czy w jednym?
Rufus_84
22.03.2014, 17:43:28
w jednym
trueblue
22.03.2014, 17:57:33
A co masz w całej tablicy $_GET ( print_r($_GET); ) ?
Rufus_84
22.03.2014, 18:38:14
nie rozumiem; nie mam tablicy $_GET...
Turson
22.03.2014, 18:46:33
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
22.03.2014, 19:21:10
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
22.03.2014, 19:29:30
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
22.03.2014, 19:57:41
no właśnie też nie mam pojęcia. zamiast pobierać name="sb" pobiera id z index.php?id="develop"...
trueblue
22.03.2014, 20:02:23
<?php
?>
<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>
<?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';
}
?>
Podmień na chwilę index.php powyższym i zobacz, co wtedy wyświetla.
Rufus_84
22.03.2014, 20:13:11
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
22.03.2014, 20:21:35
Regułki w .htacces gubią query string.
Musiałbyś dodać do nich parametr QSA.
Rufus_84
22.03.2014, 20:26:33
Masz rację działa!! ale jak przerzucę na drugą stronę wyników to resetuje sortowanie. Wiesz może jak temu zapobiec?
trueblue
22.03.2014, 20:28:14
Musisz dopisywać ten parametr w linkach paginacji.
Rufus_84
22.03.2014, 20:32:47
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.