Показать сообщение отдельно
  #1 (permalink)  
Старый 21.11.2008, 10:15
Аватар для Arzobispo
Новичок на форуме
Отправить личное сообщение для Arzobispo Посмотреть профиль Найти все сообщения от Arzobispo
 
Регистрация: 21.11.2008
Сообщений: 3

Выпадающие списки и запросы к Базе данных
Доброго времени суток!
Коллеги, помогите решить следующую проблему:

Исходные даныне: Есть на html странице 8 (число может быть больше или меньше) выпадающих списков <select>, есть БД PostgreSQL и некий Сервер.

Задача: Заходит пользователь на страницу, выбирает из 8 блоков разыне значения, могут быть выбраны как все 8 так и только три, или от 1 до 8. Потом формируются даныне и отправляются к Серверу(данные не вносятся в БД, даныне уже там есть). затем данные отображаются их на странице. Вопрос, как указать, что именно только выбранные значения посылаются, а остальные нет.

Сейчас вот у меня такой код, мне его посоветовали, но вот не помню чтобы было это описано в Help'е к JavaScript
Код:
for val in form.objects {
какие-то операции с val
}
Общий скрипт выглядит так:
<script language="JavaScript" type="text/javascript">
<!--
function create_query() {
  query=""
    for val in [...здесь идет перебор всех объектов типа select на форме...] {
        zapros='('+name_select+ '=' + val + ')'
        if (query ="" )
          query=zapros
        else {
          query=query + 'and (' + zapros +')'
};
}


И еще:
Код:
<form name="serv" method="GET" action="/cgi-bin/serv.exe">
     <td width="120" height="50">
                       <text><b>Название животного</b></text><br>
                   <input type="hidden" name="file" value="[file]">
                     <select name ="nam" size=1>
                      <option  selected></option>
                       <option value='Волк'>Волк</option>
                      <option value='Заяц'>Заяц</option>
                      <option value='Лиса'>Лиса</option>
                     </select>
                     <select name ="sex" size=1>
                      <option  selected></option>
                      <option value='Муж'>Муж</option>
                      <option value='Жен'>Жен</option>
                     </select>
                   <input type="hidden" name="layer" value="слой">
                   <input type="hidden" name="layer" value="слой">
                   <input type="hidden" name="qitem" value="">
                   <input type="hidden" name="qlayer" value="">
                   <input type="hidden" name="qstring" value="">
                   <input type="hidden" name="layer" value="слой">
                   <input type="hidden" name="mode" value="browse">                 
                   <a href="javascript:on_submit_form()">QUERY</a>
                 </form>
Конечно, можно создать большое число блоков с if и проверять, выбран соответствующий select или нет, однако, даже для 2 select, различных вариантов будет 4, для 3-х -- уже 8 и так далее. Поэтому такой способ не годится.

Упрощаем идею: будем перебирать все select в цикле. Сначала берем первый из них
и если он не пустой, пишем

Код:
query= '(Name_of_Select1 = выбранное_значение)'
Если пустой, то в query ничего не пишем

Для второго и последующих непустых select'ов будем просто дописывать

Код:
query= query + 'and (Name_of_Select2 = выбранное_значение)'
Ответить с цитированием