Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Выпадающие списки и запросы к Базе данных (https://javascript.ru/forum/dom-window/2220-vypadayushhie-spiski-i-zaprosy-k-baze-dannykh.html)

Arzobispo 21.11.2008 10:15

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

Исходные даныне: Есть на 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 = выбранное_значение)'


Часовой пояс GMT +3, время: 21:58.