Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Drop-Down Menu, надо кое что сделать 
:(
    Опции темы
Kolia
Дата 13.8.2003, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 132
Регистрация: 11.7.2003
Где: Вильнюс

Репутация: нет
Всего: нет



Дело вот в чем. Есть Drop-Down Menu. Его значения хранятся в базе (пусть это будут названия машин). И есть второе Drop-Down Menu. Его значения тоже хранятся в базе, только зависят уже от того, что было выбрано в первом Drop-Down Menu. Допустим в первом выбираю Ауди, так во втором можно выбрать соответственно только 100, А6, А8. Есди быбрали Мерседес, то соответственно во втором будет 600, 500 и т.п.

Как организовать вот это дело. Насколько я представляю, в первом SELECT'е надо использовать onChange="выбираем значение моделей из базы" из Яваскрипта. Только вот этот Яваскрипт далек от меня.

Можно ли средствами РНР это сделать, или всетаки без яваскрипта не обойтись.
--------------------
Риспект
PM MAIL ICQ Skype GTalk MSN   Вверх
Kolia
Дата 13.8.2003, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 132
Регистрация: 11.7.2003
Где: Вильнюс

Репутация: нет
Всего: нет



И все это на одной странице (типа форма для заполнения)
--------------------
Риспект
PM MAIL ICQ Skype GTalk MSN   Вверх
arial
Дата 13.8.2003, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 772
Регистрация: 11.3.2003
Где: Архангельская обл .

Репутация: 6
Всего: 7



Без JS не обойтись.
Или лишний гемор с перезагрузкой страниц.


--------------------
Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская)
PM ICQ   Вверх
IZ@TOP
Дата 13.8.2003, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Если ты имеешь в виду связь с таблицей то значит у тебя должна быть в табдице с машинами колонка "марка авто" и по ней уже и отсееваешь .

Это сообщение отредактировал(а) Iz@top - 13.8.2003, 18:34


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Cepera
Дата 14.8.2003, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



Код
<script language="JavaScript1.2" type="text/javascript">
var isPreNN6 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) <= 4);
var path = "/support/";
var driverType = new Array();
var driverTypeNT = new Array();
var driverType98ME = new Array();

/*************************************************************************
Массивы операционных систем, если требуется еще Ось, просто добавьте массив
**************************************************************************/
var productsXPdriver = new Array();
var products2kdriver = new Array();
var productsME98driver = new Array();
var productsNTdriver = new Array();
var aiwNTdriver = new Array();
var aiwWINXPdriver = new Array();
var aiwWIN2Kdriver = new Array();
var aiwME98driver = new Array();

/*************************************************************************/
var typeSelected = "";
var prodTypeSelected = "";
var prodSelected = "";

function list(name, value, url) {
this.name = name;
this.value = value;
this.url = url;
}

/*************************************************************************
Функция выборки  
*************************************************************************/
function populateList(whichBox) {
if (whichBox == "os") {
 document.selectform.prodType.options.length = 0;
 document.selectform.prod.options.length = 0;
 typeSelected = document.selectform.type.options[document.selectform.type.selectedIndex].value;
 if (typeSelected != "nt") {
  if (typeSelected == "98" || typeSelected == "me") for (var i=0;i<driverType98ME.length;i++) document.selectform.prodType.options[i] = new Option(driverType98ME[i].name, driverType98ME[i].value);
  else for (var i=0;i<driverType.length;i++) document.selectform.prodType.options[i] = new Option(driverType[i].name, driverType[i].value);
 }
 if (typeSelected == "nt") for (var i=0;i<driverTypeNT.length;i++) document.selectform.prodType.options[i] = new Option(driverTypeNT[i].name, driverTypeNT[i].value);
}
else if (whichBox == "prod") {
 prodTypeSelected = document.selectform.prodType.options[document.selectform.prodType.selectedIndex].value;
 document.selectform.prod.options.length = 0;
 if (prodTypeSelected.indexOf("graphic") != -1 && typeSelected == "xp") for (var i=0;i<productsXPdriver.length;i++) document.selectform.prod.options[i] = new Option(productsXPdriver[i].name, productsXPdriver[i].value);
 if (prodTypeSelected.indexOf("graphic") != -1 && typeSelected == "2k") for (var i=0;i<products2kdriver.length;i++) document.selectform.prod.options[i] = new Option(products2kdriver[i].name, products2kdriver[i].value);
 if (((typeSelected.indexOf("98") != -1) || (typeSelected.indexOf("me") != -1)) && (prodTypeSelected == "graphic")) for (var i=0;i<productsME98driver.length;i++) document.selectform.prod.options[i] = new Option(productsME98driver[i].name, productsME98driver[i].value);
 if ((prodTypeSelected.indexOf("mm") != -1) && (typeSelected == "xp")) for (var i=0;i<aiwWINXPdriver.length;i++) document.selectform.prod.options[i] = new Option(aiwWINXPdriver[i].name, aiwWINXPdriver[i].value);
 if ((prodTypeSelected.indexOf("mm") != -1) && (typeSelected == "2k")) for (var i=0;i<aiwWIN2Kdriver.length;i++) document.selectform.prod.options[i] = new Option(aiwWIN2Kdriver[i].name, aiwWIN2Kdriver[i].value);
 if (((typeSelected.indexOf("98") != -1) || (typeSelected.indexOf("me") != -1)) && (prodTypeSelected == "mm")) for (var i=0;i<aiwME98driver.length;i++) document.selectform.prod.options[i] = new Option(aiwME98driver[i].name, aiwME98driver[i].value);
 if ((prodTypeSelected.indexOf("graphic") != -1) && (typeSelected == "nt")) for (var i=0;i<productsNTdriver.length;i++) document.selectform.prod.options[i] = new Option(productsNTdriver[i].name, productsNTdriver[i].value);
 if (prodTypeSelected.indexOf("mm") != -1 && typeSelected.indexOf("nt") != -1) for (var i=0;i<aiwNTdriver.length;i++) document.selectform.prod.options[i] = new Option(aiwNTdriver[i].name, aiwNTdriver[i].value);
}
if (isPreNN6) history.go(0);
}


function changePage() {
if (document.selectform.prodType.options.length < 1) {
 document.selectform.prod.options.length = 0;
 alert("Выберите Операционную систему");
 return false;
}
if (document.selectform.prod.options.selectedIndex == -1) {
 alert("Выберите продукт");
 return false;
}
if (document.selectform.prod.options.selectedIndex < 0) {
 alert("Выберите тип продукта");
 return false;
}
prodSelectedValue = document.selectform.prod.options[document.selectform.prod.selectedIndex].value;
prodSelected = document.selectform.prod.options[document.selectform.prod.selectedIndex].text;
if (prodSelectedValue.indexOf("aiwWIN2Kdriver") != -1) {
 for (var i=0;i<document.selectform.prod.options.length;i++) if (prodSelected == aiwWIN2Kdriver[i].name) document.selectform.action = path+aiwWIN2Kdriver[i].url;
}
if (prodSelectedValue.indexOf("products2kdriver") != -1) {
 for (var i=0;i<document.selectform.prod.options.length;i++) if (prodSelected == products2kdriver[i].name) document.selectform.action = path+products2kdriver[i].url;
}
else if (prodSelectedValue.indexOf("productsXPdriver") != -1) {
 for (var i=0;i<document.selectform.prod.options.length;i++) if (prodSelected == productsXPdriver[i].name) document.selectform.action = path+productsXPdriver[i].url;
}
else if (prodSelectedValue.indexOf("productsME98driver") != -1) {
 for (var i=0;i<document.selectform.prod.options.length;i++) if (prodSelected == productsME98driver[i].name) document.selectform.action = path+productsME98driver[i].url;
}
else if (prodSelectedValue.indexOf("aiwWINXPdriver") != -1) {
 for (var i=0;i<document.selectform.prod.options.length;i++) if (prodSelected == aiwWINXPdriver[i].name) document.selectform.action = path+aiwWINXPdriver[i].url;
}
else if (prodSelectedValue.indexOf("aiwME98driver") != -1) {
 for (var i=0;i<document.selectform.prod.options.length;i++) if (prodSelected == aiwME98driver[i].name) document.selectform.action = path+aiwME98driver[i].url;
}
else if (prodSelectedValue.indexOf("productsNTdriver") != -1) {
 for (var i=0;i<document.selectform.prod.options.length;i++) if (prodSelected == productsNTdriver[i].name) document.selectform.action = path+productsNTdriver[i].url;
}
else if (prodSelectedValue.indexOf("aiwNTdriver") != -1) {
 for (var i=0;i<document.selectform.prod.options.length;i++) if (prodSelected == aiwNTdriver[i].name) document.selectform.action = path+aiwNTdriver[i].url;
}
}


/*****************************************************************************
Формат:
1. Создание глобального массива
ИмяМассива[x] = new list("Пункт меню 2", "подмассив", "урл или null");
2. Создание массива продуктов:
ИмяМассива[x] = new list("Имя продукта", "массив", "урл");
******************************************************************************/

driverType[0] = new list("Graphic Driver", "graphic", "null");
driverType[1] = new list("Multimedia Center", "mm", "null");

driverType98ME[0] = new list("Graphic Driver", "graphic", "null");
driverType98ME[1] = new list("Multimedia Center", "mm", "null");

driverTypeNT[0] = new list("Graphic Driver", "graphic", "null");
driverTypeNT[1] = new list("Multimedia Center", "mm", "null");

productsXPdriver[0] = new list("productsXPdriver 1","productsXPdriver","products/winxp/1.html");
productsXPdriver[1] = new list("productsXPdriver 2","productsXPdriver","products/winxp/2.html");

products2kdriver[0] = new list("products2kdriver 1","products2kdriver","products/win2k/1.html");
products2kdriver[1] = new list("products2kdriver 2","products2kdriver","products/win2k/2.html");

productsME98driver[0] = new list("productsME98driver 1","productsME98driver","products/winme/1.html");
productsME98driver[1] = new list("productsME98driver 2","productsME98driver","products/winme/2.html");

productsNTdriver[0] = new list("productsNTdriver 1","productsNTdriver","products/nt/1.html");
productsNTdriver[1] = new list("productsNTdriver 2","productsNTdriver","products/nt/2.html");

aiwWINXPdriver[0] = new list("aiwWINXPdriver 1","aiwWINXPdriver","drivers/winxp/1.html");
aiwWINXPdriver[1] = new list("aiwWINXPdriver 2","aiwWINXPdriver","drivers/winxp/2.html");

aiwWIN2Kdriver[0] = new list("aiwWIN2Kdriver 1","aiwWIN2Kdriver","drivers/win2k/1.html");
aiwWIN2Kdriver[1] = new list("aiwWIN2Kdriver 2","aiwWIN2Kdriver","drivers/win2k/2.html");

aiwME98driver[0] = new list("aiwME98driver 1","aiwME98driver","drivers/winme/1.html");
aiwME98driver[1] = new list("aiwME98driver 2","aiwME98driver","drivers/winme/2.html");

aiwNTdriver[0] = new list("aiwNTdriver 1","aiwNTdriver","drivers/nt/1.html");
aiwNTdriver[1] = new list("aiwNTdriver 2","aiwNTdriver","drivers/nt/2.html");
</script>
<form method="get" name="selectform" onSubmit="return changePage();">
<select name="type" id="type" onChange="populateList('os');" size="5">
<option value="xp">Windows XP</option>
<option value="2k">Windows 2000</option>
<option value="nt">Windows NT</option>
<option value="me">Windows ME</option>
<option value="98">Windows 98</option>
</select>
<select name="prodType" onChange="populateList('prod');" size="5"></select>
<select name="prod"  size="5" ></select>
<input type="submit" value="Select">
</form>



--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Cepera
Дата 14.8.2003, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



вот, думаю объяснять ничего не надо, разве что тут три меню, а не два... но я просто не изменял разработку smile.gif


--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Cepera
Дата 14.8.2003, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



и еще если хотите сделать drop-down, то size у select'ов замените на "1"


--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Kolia
Дата 14.8.2003, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 132
Регистрация: 11.7.2003
Где: Вильнюс

Репутация: нет
Всего: нет



понял
--------------------
Риспект
PM MAIL ICQ Skype GTalk MSN   Вверх
Kolia
Дата 14.8.2003, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 132
Регистрация: 11.7.2003
Где: Вильнюс

Репутация: нет
Всего: нет



Cepera с твоим припером все ясно. Только вот загвоздка есть. У тебя все переменные описаны в скрипте, а у меня они хранятся в базе. Т.е. я их не знаю, пока не выбрал что-то первым СЕЛЕКТОМ.

Я все себе представлял так:
1) Получаю значение от первого селекта;
2) Запрос в базу;
3) Вывод второго селекта на основе полученных данных.

Получается, что запрос я должен делать где-то в яваскрипте. А вот как там его сделать, я не представляю. Была идея с помощью функции (вызывается onChange) узнать выбранное значение, а там уже в РНР все сделать. Только не знаю, как же в РНР это значение его.

Есть идея сделать запрос на все данные, а там уже в яваскрипте отсеять ненужные. Только вот если результат запроса офигенно большой будет, как-то не очень тогда (на самом деле у меня не машины, но суть проблемы та же).
--------------------
Риспект
PM MAIL ICQ Skype GTalk MSN   Вверх
Cepera
Дата 14.8.2003, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



какая разница в БД или нетconfused.gif я же показал уже ответ для клиента, просто добавь выборку из бд и все...


--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Kolia
Дата 18.8.2003, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 132
Регистрация: 11.7.2003
Где: Вильнюс

Репутация: нет
Всего: нет



Я вобще-то не очень представляю, где и как эту выборку тут устроить. Смотри:

Код

<script language="JavaScript1.2" type="text/javascript">
function model()
{
//        Сделать выборку.
//        Тут выводится "зависимый" селект
}
</SCRIPT>

..

<SELECT class="laukas" name="car" onChange=model()>


Я нигде не нашел инфы, как в яваскрипте выборку делать.

Пробовал делать ее до функции model() и в ней передавать скрипту массив со значениями, а в функции отсеявать ненужные. Только не получается как-то массив этот передать.

Вот где у меня собака зарыта.
Ай нид ХЕЛП
--------------------
Риспект
PM MAIL ICQ Skype GTalk MSN   Вверх
Cepera
Дата 18.8.2003, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



не понятен последний вопрос


--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Kolia
Дата 18.8.2003, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 132
Регистрация: 11.7.2003
Где: Вильнюс

Репутация: нет
Всего: нет



парам парам. После долгих безрезультатных попыток у меня все ЗАРАБОТАЛО!!! Ура.
Cepera твой тот скрипт ОСОБЕННО помог. Лично благодарю


--------------------
Риспект
PM MAIL ICQ Skype GTalk MSN   Вверх
Cepera
Дата 18.8.2003, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



ну ок smile.gif


--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0551 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.