Najpierw funkcja w js:
function **createURLFilters(SelName)** {
var obj=document.getElementById(SelName);
window.location.href ='http://'+location.hostname+location.pathname+'?search='+obj.options[**obj.selectedIndex**].value;
}
funkcja ma "przejść" na stronę wg danego wzoru, czyli ma "załadować" stronę http://[mojadomena]/index.php?search=[opcja wybrana z listy]
Teraz trochę PHP:
function createFilters($filtername) { //załóżmy, że $filtername = 'status'
$sql = new mysql("SELECT DISTINCT `".$filtername."` FROM `contacts` WHERE `user` = '%i'",0, $CURUSER['id']); // wybieranie wszystkich kontaktów zalogowanego USERA z ocpją DISTINCT
$str='<SELECT name="filter_'.$filtername.'" onChange="**createURLFilters(\'filter_'.$filtername.'\')**">'; // tag otwierający SELECT nazwa w tym przypadku to "name='filter_status' " i zdarzenie onChange, które wywołuje funkcję JS ze zmienną o nazwie "filter_status"
$str.='<OPTION value="0">---</OPTION>';
foreach ($sql->getAll() as $op) { // początek pętli
$str.='<OPTION value="'.$op[$filtername].'">'.$op[$filtername].'</OPTION>'; // stworzenie opcji wyboru gdzie value będzie równe jednowyrazowym statusom z bazy danych np. student, pracownik, tester, szef itp.
}
$str.='</SELECT>'; // zamknięcie SELECTa
return $str; // 'wyrzucenie' całego selecta na zewnątrz
}
a teraz wywołanie funkcji:
<?=createFilters('status')?>
co w HTML wygląda tak:
<select name="filter_status" onchange="createURLFilters('filter_status')">
<option value="0">---</option>
<option value="admin">admin</option>
<option value="moderator">moderator</option>
<option value="szef">szef</option>
<option value="tester">tester</option>
<option value="pracownik">pracownik</option>
</select>
No i teraz podczas wybierania jednej z opcji z SELECTa dostaję komunikat w konsoli:
TypeError: obj is null
Od razu napiszę, że SELECT się wyświetla z pięknie załadowanymi opcjami zczytanymi z bazy danych.
Jakiś pomysł???