Динамический SELECT: как решить проблему...

Lloyd

Новичок
Динамический SELECT: как решить проблему...

На форумах и статьях обычно для примера приводится форма "Страна - Регион - Город" т.е. первый select строится сразу, второй подгружаются исходя из значения первого, третий - исходя из значения второго и так далее... Все хорошо и здорово.

А как быть если, например, имеем 3 селекта, и 3-ий должен строиться исходя из значений как второго так и превого? Т.е. иначе говоря если между первым и третьим селектом имеется соотношение "многие ко многим", которое надо учитывать при "подгрузки" его значений?
 

sanches.free

Новичок
не совсем понятна проблема...

передаете просто значения страна и регион в пхп скрипт, там обрабатываете и делаете запрос какой-нить к базе, типа
select city from cityListTable where countryId = $cID and regionId = $rID ...
 

basboy

Новичок
Lloyd
Я так понял, что затык не в запросе, а что ты не понимаешь как передать два значения?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
<select name=name1>
.................
</select>
<select name=name2>
.................
</select>
<select name=name3 onchange=myfunc();>
.................
</select>

myfunc()
val1=my_form.name1.value;
val2=my_form.name2.value;
a.open('GET', 'load.php?val1='+val1+'&val2='+val2, true);


Где-то так.
 

Фанат

oncle terrible
Команда форума
sanches.free
речь идет об элементе Select HTML формы, а не об sql запросе.
читай внимательно! не только вопрос, но и раздел, в котором он находится.

Lloyd
2 дня назад был ТОЧНО такой же вопрос
 

Lloyd

Новичок
я делаю как описано в примере http://tigir.com/javascript_select.htm

Там просто задается массив значений:

// Определяем значения подчиненных списков (2 и 3 селектов)
syncList1.dataList = {

/* Определяем элементы второго списка в зависимости
от выбранного значения в первом списке */

'ie':{
'ie_win':'Windows',
'ie_mac':'Mac'
},

'safari':{
'safari_mac':'Mac'
},

/* Определяем элементы третьего списка в зависимости
от выбранного значения во втором списке */

'ie_win':{
'ie_win_5':'версия 5',
'ie_win_6':'версия 6'
},

'ie_mac':{
'ie_mac_5':'версия 5'
},

'safari_mac':{
'safari_mac_1':'версия 1',
'safari_mac_2':'версия 2'
}
};

значение беру через document.getElementById
 

basboy

Новичок
maxwell
Читай вопрос и нить обсуждений.
и в чем проблема то?
задай этот вопрос себе.

-~{}~ 17.01.08 11:50:

Lloyd
ну и славно. ты можешь используя
получить два значения.
А потом нужно узнать про операторы усновного перехода (подсказка: if() {} else {})
 

maxwell

artifex
basboy, Я не видел конкретного вопроса, и кстати, до сих пор его не вижу.
Вопрос «как быть?» считаю на этом форуме не уместным.

В статье на которую ссылается автор, все описано, и где у автора именно проблемы не понятно.
 

Platon_82

Новичок
Я тоже деалаю селекты, только на аяксе
Подскажите где у меня ошибка
В темплейте

PHP:
<select id="country" name="country" onChange="handleListChange(this.id);">
</select>
Ajax.php
PHP:
<?
$select="<select id=country name=country>
<option value=1>Украина</option>
<option value=2>Россия</option>
<option value=3>Япония</option>
<option value=4>США</option>
<option value=5>Китай</option>
</select>";

$objResponse->addAssign("country", "innerHTML", $select);
?>
Мне выводит ошибку

<b>Notice</b>: Undefined variable: sResponse in <b>D:\htdocs\ex\xajax\xajax.inc.php</b

> on line <b>745</b><br />

<?xml version="1.0" encoding="windows-1251" ?><xjx><cmd n="as" t="country" p="innerHTML"><![CDATA[<option value=1>Украина</option>
<option value=2>Россия</option>
<option value=3>Япония</option>
<option value=4>США</option>
<option value=5>Китай</option></select>]]></cmd></xjx>
Почему. Что делаю не так?
 

Farsh

~ on ~ high ~ wave ~
м .
Вот яркий пример :
http://php-ajax-code.blogspot.com/2007/07/ajax-triple-dropdown-with-states-cities.html
 

RoLex

Новичок
Автор оригинала: Platon_82
Я тоже деалаю селекты, только на аяксе
Подскажите где у меня ошибка
В темплейте
.....................................
Мне выводит ошибку
Почему. Что делаю не так?
потому что ты не понимаешь как работает св-во innerHTML,а оно содержит значение "внутренности" указанного в данном случае тэга.
и если ты для <select id="country" name="country" onChange="handleListChange(this.id);">
</select>
а как ты меняешь его innerHTML то получится
PHP:
<select id="country" name="country" onChange="handleListChange(this.id);">
            <select id=country name=country>
            <option value=1>Украина</option>
               <option value=2>Россия</option>
            <option value=3>Япония</option>
           <option value=4>США</option>
          <option value=5>Китай</option>
           </select>
</select>
поэтому и ошибка.
на странице вместо этого
PHP:
<select id="country" name="country" onChange="handleListChange(this.id);">
</select>
надо написать
например так
PHP:
<div id="divCountry">
<select id="country" name="country" onChange="что нуна тут">
</select> 
</div>
и в $objResponse->addAssign("country", "innerHTML", $select); -> $objResponse->addAssign("divCountry", "innerHTML", $select);

-~{}~ 22.01.08 10:52:

ЗЫ. а для селектов innerHTML не всегда корректно срабоатывает. не во всех барузерах по карйней мере...

если не изменяет память, это связано с тем, к какому тегу приеняешь его - замещаемый тэг или нет.
 
Сверху