|
|
|
Веб-интерфейс для определения конфигурации с помощью комбобоксов
|
|||
|---|---|---|---|
|
#18+
Возникла задачка: Есть n combobox- ов Combobox_1 .. Combobox_N Есть таблица связей в базе со столбцами: Column_1 .. Column_N Если элемент принадлежит i тому комбобоксу , то этот элемент принадлежит i тому столбцу. Пользователю нужно сформировать конфигурацию из N параметров c помощью комбобоксов. Как это реализовать в виде веб- интерфейса? Возможно есть стандартные подходы? Например, нам нужно заказать кота, для этого выбираем его конфигурацию: цвет,вес, пол,возраст. Combo1: color id=1 name=рыжый id=2 name=серый id=3 name= белый Combobox2: weight: id=10 name=100kg id=20 name=200kg id=30 name=400kg Combobox3: sex id=1 name=M id=2 name=F Combobox4: age id=1 name=3 id=2 name=4 id=3 name=5 Таблица cat_links содержит всех котов которые есть в наличии: colorId weightId sexId ageId 1 10 2 2 3 2 10 1 2 3 .... З.Ы. Вариант: сначала выбрать все что надо, а потом получить сообщение: "Извините, такого кота у нас нет" не канает. Т.е все действия с комбобоксами должны приводить к существующим котам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 10:56 |
|
||
|
Веб-интерфейс для определения конфигурации с помощью комбобоксов
|
|||
|---|---|---|---|
|
#18+
Если речь идёт о веб-интерфейсе - то вам нужно использовать JavaScript. "Первое пришедшее в голову" :-)) решение: Например, есть 3 параметра - 2й зависит от первого, 3й - от второго (страна, город, почтовый индекс). На test.jsp указывайте 3 формы: <form name=f1 action="test.jsp"> - т.е. сама на себя :-))) <select name="countries" onChange="formSubmit(this.form)"> <!--получение списка значений из бина--> </select> </form> 2я форма: <form name=f2 action="test.jsp"> - т.е. снова сама на себя :-))) <select name="cities" onChange="formSubmit(this.form)"> <!--получение списка значений из бина с учетом значения request.getParameter("countries"), т.е. выборка из базы (или из HashMap-a :-)) городов страны из формы f1--> </select> </form> 3 форма: <form name=f3 action="следующая.jsp"> <select name="zipCodes"> <!--получение списка значений из бина с учетом значения request.getParameter("cities"), т.е. выборка из базы (или из HashMap-a :-)) городов страны из формы f2--> </select> </form> Функция formSubmit на JavaScript: function formSubmit(){ document.forms[0].submit(); }; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 13:40 |
|
||
|
Веб-интерфейс для определения конфигурации с помощью комбобоксов
|
|||
|---|---|---|---|
|
#18+
для третьей формы опечатка вышла - из-за народного метода copy/paste, но думаю, там всё ясно :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 13:43 |
|
||
|
Веб-интерфейс для определения конфигурации с помощью комбобоксов
|
|||
|---|---|---|---|
|
#18+
спасибо, с представлением на странице как раз все понятно. Интересует связка именно с базой данных и непонятно, какая функциональность нужна. Есть несколько вариантов: 1) После каждого выбора в одном из комбобоксов, сужается множество возможных значений в других комбобоксах. В итоге, если мы выбрали черный цвет, множество котов сузилось на черных, там оказались только старые, а нам надо молодого - но мы уже не сможем выбрать молодого потому что его нет в соотв. комбобоксе. 2) Не сужать множества значений в других комбобоксах. Тогда встает вопрос... допустим мы правильно выбрали цвет и возраст, но под такую комбинацию не существует пола- тогда при выборе несуществующего пола делать что? - Говорить: "Извините нет" - Устанавливать пол в селектэд, а все остальные значения, которые так мучительно набирали сбрасывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 13:53 |
|
||
|
Веб-интерфейс для определения конфигурации с помощью комбобоксов
|
|||
|---|---|---|---|
|
#18+
- Поставить в селектед пол и поставить в селектед те из ранее зафиксированных значений которые соответствуют этому полу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 13:56 |
|
||
|
Веб-интерфейс для определения конфигурации с помощью комбобоксов
|
|||
|---|---|---|---|
|
#18+
Бин сужает кол-во значений - я и написал: <!--получение списка значений из бина с учетом значения request.getParameter("countries"), т.е. выборка из базы (или из HashMap-a :-)) городов страны из формы f1--> т.е. список значений в комбобоксе формируется динамически, например, из таблиц БД. В данном случае бины каждого комбобокса должны выполнять соотвествующие скуль :-)) запросы с параметрами к соотвествующей таблице: select * from cities where id_country = :request.getParameter("countries"). Остальное зависит от ваших таблиц-справочников в БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 14:01 |
|
||
|
Веб-интерфейс для определения конфигурации с помощью комбобоксов
|
|||
|---|---|---|---|
|
#18+
Alexey Turnспасибо, с представлением на странице как раз все понятно. Интересует связка именно с базой данных и непонятно, какая функциональность нужна. Есть несколько вариантов: ... Если программисту не понятно, как это должно функционировать, то юзеру будет ещё сложнее научиться этим пользоваться :) Имхо, нужно сделать проще. Например, так: Есть таблица. Для каждой колонки существует выпадающий список (например как заголовок таблицы), содержащий кроме всего прочего значение "any". В самой таблице списки "котов" удовлетворяющие выбранным параметрам. Рядом скаждым списком есть галочка - запомнить/не запоминать. При смене значения в одном из списков, все не отмеченные галочкой списки сбрасываются на any (кроме активного списка) либо просто игнорируются и выводятся все "кошки" удовлетворяющие критериям отмеченным галочками. Пользователь либо просто тыкает в нужную "кошку" либо сужает/расширяет поиск кликая в галочки и выбирая новое значение из списка. Или так: Оставить набор списков, но жёстко зафикисровать последовательность выбора параметров. Сначала цвет, потом вес, потом пол и т.д. Выбрали цвет, выбрали вес, выбрали пол. Затем поменяли вес - всё что "правее" веса скидывается на "не выбрано" и пользователь продолжает кликать. Можно добавить сюда возможность зафиксировать выбранные значения, как в варианте выше, но это имеет смысл, только если выбирать надо действительно большое кол-во параметров. Или предоставить юзеру возможность самому менять порядок следования параметров... Но как не крути, всё равно может возникнуть ситауция, что выбранного животного не будет существовать, например, если его удалят из базы в период между кликами пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 15:02 |
|
||
|
Веб-интерфейс для определения конфигурации с помощью комбобоксов
|
|||
|---|---|---|---|
|
#18+
Возможность обновления котов в базе во время выбора юзером исключается, поскольку это у меня справочные данные и меняются редко. получится просто визард. Шаг1 Шаг2 Шаг3. А задача стоит минимизировать количество кликов юзера и достичь желаемой конфигурации. Вариант "Например, так:" более интерестен, но здесь добавляется новый греющий голову пользователя элемент -галочки. Был бы благодарен за ссылки на подобные примеры. Вариант "Или Так" не подходит по той простой причине что в таком случае это ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 15:32 |
|
||
|
Веб-интерфейс для определения конфигурации с помощью комбобоксов
|
|||
|---|---|---|---|
|
#18+
Вариант "Или Так" не подходит по той простой причине что в таком случае это получится просто визард. Шаг1 Шаг2 Шаг3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 15:34 |
|
||
|
Веб-интерфейс для определения конфигурации с помощью комбобоксов
|
|||
|---|---|---|---|
|
#18+
По-моему, правильно "сужать" множество значений. Допустим, пользователь выбрал 100 килограммового чёрного кота 26 лет. Тогда в список имеющихся котов (ArrayList в бине) сузится до списка: select name as ДОСТУПНЫЙ_КОТ from таблица_котов_в_наличии where color=:request.getParameter("color") and weight=:request.getParameter("weight") and sex=:request.getParameter("sex") and years=:request.getParameter("years") Скорее всего, такого кота нету в наличии ;-)) Тогда в бине списокКотов.java - **** ArrayList списокКотов= new ArrayList() **** while (resultSet.next()) { списокКотов.add(resultSet.getString("ДОСТУПНЫЙ_КОТ")); } if (списокКотов.size()==0) {списокКотов.add("ТАКИХ КОТОВ НЕТ");}; **** public ArrayList getСписокКотов(){return this.списокКотов}; **** Получается, что пользователь увидит в списке доступных котов только одну строку - "ТАКИХ КОТОВ НЕТ" и должен будет выбрать конфигурацию заново. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 15:59 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=807&tid=2152482]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 340ms |

| 0 / 0 |
