Ответов: 1 Просмотров: 734
|
Всем хай.
Делаю проект по СУБД на php+sql.
Поставлена задача сделать фильтр поиска.
Суть задачи:
Имеется форма из 4 combobox и button
<from>
1. Федеральный округ
2. Субъект
3. Город
4. ВУЗ
Выбрать
</form>
Изначально все 4 комбо получают общие значения из БД на сервере(все значения из своих столбцов)
Суть фитра в том, что из комбо выбираются значения, по кнопке Выбрать происходит редирект на новую форму с передачей параметров для полного SQL Select и отображением необходимой инфо-таблицы по этим параметрам.
Но не все так просто(по крайнй мере для меня)
Пример 1(и вроде как самый простой в реализации, но...) "Cверху -> Вниз":
При выборе значения в 1 боксе происходит новый запрос БД и 2,3,4 уже получают отфильтрованные значения по первому боксу. И так далее вплоть до 4 бокса.
Пример 2(самый сложно представляемый мною) "Рандомный выбор бокса":
При выборе ЛЮБОГО кроме первого бокса все верхние заполняются автоматически.
т.е. при выборе 3 бокса 1 и 2 заполнятся автоматом по полученным значения столбцов из БД, а 4 при этом получит отфильтрованный по 3 боксу список.
прилагаю наброски сырые наброски:
Спойлер (Отобразить)
PHP:
скопировать код в буфер обмена
<? include ($_SERVER['DOCUMENT_ROOT'].'/scripts/db_con.php'); $fo_res = mysql_query(" SELECT DISTINCT region FROM vuz ORDER BY region "); $sbj_res = mysql_query(" SELECT DISTINCT oblname FROM vuz ORDER BY oblname"); $city_res = mysql_query(" SELECT DISTINCT city FROM vuz ORDER BY city"); $vuz_res = mysql_query(" SELECT DISTINCT z2 FROM vuz ORDER BY z2"); ?> <form method="POST" action=""> Федеральный округ<br><select name='rg_sel' size="1" onChange='this.form.submit()' > <option value="NULL">--</option> echo '<option value='.$row['region'].'>'.$row['region'].'</option>';}?> <? if (isset($_POST['rg_sel'])) { echo $_POST['rg_sel']; } else { echo 'не выбрано'; }?> </select><br> Субъект федерации<br><select name='sbj_sel' size="1"> <option value="NULL">--</option> <? if(isset($_POST['rg_sel'])){ $rg_sel=$_POST['rg_sel']; $sbj_res = mysql_query(" SELECT DISTINCT oblname FROM vuz WHERE region=$rg_sel ORDER BY oblname"); echo '<option value='.$row['oblname'].'>'.$row['oblname'].'</option>'; } } else { $sbj_res = mysql_query(" SELECT DISTINCT oblname FROM vuz ORDER BY oblname"); echo '<option name=\'sbj_sel\' value='.$row['oblname'].'>'.$row['oblname'].'</option>'; } }?> </select><br> Город<br><select size="1"> <option value="NULL">--</option> </select><br> ВУЗ<br><select size="1"> <option value="NULL">--</option> </select><br><br> <input type="submit" name="fl_btn" value="Выбрать"> </form>
Выдержка из БД для наглядности в прикрепе |