+ Ответить в теме
Показано с 1 по 8 из 8

Тема: Взаимодействие 2-х селектов

  1. #1
    Гений Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Аватар для Max_br
    Регистрация
    26.02.2008
    Адрес
    54
    Возраст
    40
    Сообщений
    2,097
    Поблагодарил(а)
    1,077
    Получено благодарностей: 824 (сообщений: 401).

    По умолчанию Взаимодействие 2-х селектов

    Наверное больше вопрос НОНСУ ибо знаю что такими знаниями обладает

    Есть БД MySQL, в ней две таблицы, допустим первая это рубрики, вторая соответственно подрубрики (допустим как на автобратске - тип машины и модели машин).

    Как сделать, что бы при выборе 1-го селекта с типами машин 2-й селект заполнялся соответствующими моделями, все как то должно взаимодействовать с БД.

    Буду очень благодарен!

  2. #2
    Джедай nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь
    Регистрация
    22.01.2005
    Сообщений
    3,753
    Поблагодарил(а)
    419
    Получено благодарностей: 1,257 (сообщений: 528).

    По умолчанию

    Цитата Сообщение от Max_br Посмотреть сообщение
    Наверное больше вопрос НОНСУ =) ибо знаю что такими знаниями обладает =)

    Есть БД MySQL, в ней две таблицы, допустим первая это рубрики, вторая соответственно подрубрики (допустим как на автобратске - тип машины и модели машин).

    Как сделать, что бы при выборе 1-го селекта с типами машин 2-й селект заполнялся соответствующими моделями, все как то должно взаимодействовать с БД.

    Буду очень благодарен!
    http://en.wikipedia.org/wiki/Join_(SQL)
    http://ru.wikipedia.org/wiki/Алгоритм_соединения_(СУБД)

    :)
    Телевизор — это просто маленькое прозрачное окошко в трубе духовного мусоропровода. © В. Пелевин.

  3. #3
    Гений Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Аватар для Max_br
    Регистрация
    26.02.2008
    Адрес
    54
    Возраст
    40
    Сообщений
    2,097
    Поблагодарил(а)
    1,077
    Получено благодарностей: 824 (сообщений: 401).

    По умолчанию

    Может это был мне намек, но я не могу что то домыслить все таки как данимачески изменять значения второго выпадающего списка (select) который привязан к выбору из первого селекста (автобратск допустим). Там еще модуль подключаете jquery.js я так понимаю спец. для этого (хотя могу ошибаться).

  4. #4
    Джедай nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь
    Регистрация
    22.01.2005
    Сообщений
    3,753
    Поблагодарил(а)
    419
    Получено благодарностей: 1,257 (сообщений: 528).

    По умолчанию

    так.. по твоему первому посту я понял, что надо выборку из двух таблиц MySQL сделать) видимо ты про другое :) позже опишу про select, jquery и прочий ajax :)
    Телевизор — это просто маленькое прозрачное окошко в трубе духовного мусоропровода. © В. Пелевин.

  5. 1 пользователь сказал cпасибо nons за это полезное сообщение:

    Max_br (25.06.2009)

  6. #5
    Гений Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Аватар для Max_br
    Регистрация
    26.02.2008
    Адрес
    54
    Возраст
    40
    Сообщений
    2,097
    Поблагодарил(а)
    1,077
    Получено благодарностей: 824 (сообщений: 401).

    По умолчанию

    Цитата Сообщение от nons Посмотреть сообщение
    так.. по твоему первому посту я понял, что надо выборку из двух таблиц MySQL сделать) видимо ты про другое позже опишу про select, jquery и прочий ajax
    Не, выборку я умею делать
    Спасиб, буду ждать, посмотрел как это реализовано на автобратске, но вот JS плохо знаю, понял только что данные берутся из скрипта back а вот в какой форме они оттуда берутся и как это реализовано не догоню. Вопросом этим давно интересуюсь а тут его понадобилось реализовать, в инете ничего толкового не нашел, на нулледе то же что то тишина.

    Добавлено через 17 часов 51 минуту
    Вчера все таки нашел информацию и реализовал у себя сие действие с селектами.
    Хотел спросить еще по JS:
    Код:
    <script>
    function doload(value){
    var req=new JsHttpRequest();
    req.onreadystatechange=function(){
    if(req.readyState==4) document.getElementById("result").innerHTML=req.responseText;}
    req.open(null,"subrubrlist.php",true);    <--- Можно выполнить с параметром по GET?
    req.send({rubr:value});}
    </script>
     
    ...
    <select size="1" name="rubr" style="width: 250px; color: #595959" onchange="doload(this.value);">
         <option value="0">Выберете раздел</option>';
         <option value="1">Общий раздел</option>
         <option value="2">Дополнительный раздел</option>
         </select>
    Добавлено через 17 часов 55 минут
    req.open(null,"subrubrlist.php",true);

    можно ли его выполнить с параметром допустим id=i, где i - значение выбранного элемента из селекта.
    Последний раз редактировалось Max_br; 26.06.2009 в 09:16. Причина: Добавлено сообщение

  7. #6
    Джедай nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь
    Регистрация
    22.01.2005
    Сообщений
    3,753
    Поблагодарил(а)
    419
    Получено благодарностей: 1,257 (сообщений: 528).

    По умолчанию

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

    На пальцах: есть замечательный ajax-фреймворк под названием jQuery (первочнально работал с его аналогом prototype, однако позже ушел, но это лирика). Данная библиотека позволят асинхронно обмениваться информацией между страницей на неким бэкэнедом (скриптом).

    как работать с этой библиотекой можно прочитать в этих ваших интернетах, благо статей туева куча, да на том же хабре.

    Далее, у нас на странице имеется два селекта (упрощенный пример автобратска):

    Код HTML:
    <select name="marks_id" onchange="getModels(value);" tabindex="1">
    	<option value="0">Любая марка</option>
    	<option value="1" >марка 1</option>
    	<option value="2" >марка 2</option>
    </select> 
    										
    	&rarr;	
    
    <div id="models">
    	<select name="models_id" tabindex="2">
    		<option value="0">Любая модель</option>
    	</select> 
    </div>
    Второй селект у нас пустой, либо для него заданы значения только для первого элемента первого селекта.
    У первого же селекта можно заметить вызов js-функции getModels(value); на изменение данного селекта передается выбранное значение (value). Смотрим подробнее функцию:

    Код:
    function getModels($id){		
    	var url = '/back.php';	
    	var params = '?id=' + $id;		
    	$("#models").load(url+params);
    }
    функции передается параметр - ид марки.

    url - адрес нашего бэкэнда, который и будет обрабатывать полученные данные и возвращать чтото в ответ.
    params - передваемые бэкэнду параметры.
    $("#models").load(url+params); - эта строчка какбе говорит нам, что в блок (div) на странице с id="models" надо загрузить результат вызова бэкенда (url+params, т.е. /back.php?id=1).

    осталось написать тот самый back.php в котором мы просто напросто делаем выборку моделей по данному id и выводим их в виде селекта с опциями моделей.

    вот впринципе и все. если очень просто.




    Телевизор — это просто маленькое прозрачное окошко в трубе духовного мусоропровода. © В. Пелевин.

  8. 1 пользователь сказал cпасибо nons за это полезное сообщение:

    Max_br (27.06.2009)

  9. #7
    Гений Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Max_br Закрылки на взлет Аватар для Max_br
    Регистрация
    26.02.2008
    Адрес
    54
    Возраст
    40
    Сообщений
    2,097
    Поблагодарил(а)
    1,077
    Получено благодарностей: 824 (сообщений: 401).

    По умолчанию

    Реализовал у себя взаимодействие двух селектов... но возникла проблема в ИЕ 6-м работает все норм, а вот в опере и хроме нет

    Вот скрипт, возращающий подрубрики у переданной рубрики. Визуально это работает и в опере и хроме, но при попытке сохранить выбранные значения - параметр subrubr оказываетс пустым значением (хотя в ИЕ6 работает все норм)...

    PHP код:
    <?
     
    include "connect.php";
     require(
    "JsHttpRequest.php"); //Подключаем библиотеку
     
    $JsHttpRequest=new JsHttpRequest("windows-1251");
     
    $html=null;


          
    $rubr=$_REQUEST***91;"rubr"***93;;

          
    $html '<select size="1" name="subrub" style="width: 250px; color: #595959">';
          
    $query "SELECT * FROM subrubr WHERE rubr_id=".$rubr;

          
    $result_id mysql_query ($query) or print ("<p><b>Ошибка</b> при формировании подразделов</p>");
          while (
    $row mysql_fetch_row ($result_id))
          {
           
    $html $html.'<option value="'.$row***91;0***93;.'">'.$row***91;2***93;.'</option>';
          }
          
    $html $html.'</select>';

          if (empty(
    $rubr))
          
    $html '<select size="1" name="subrub" style="width: 250px; color: #595959; background:#DBDFDF;" disabled="disabled">
                     <option value="0">Выберете подраздел</option>
                    </select>'
    ;

     echo 
    $html;
    ?>

  10. #8
    Умник Mi}{@1 Включаюсь Mi}{@1 Включаюсь Mi}{@1 Включаюсь Mi}{@1 Включаюсь Аватар для Mi}{@1
    Регистрация
    06.04.2009
    Адрес
    энергетик
    Возраст
    32
    Сообщений
    708
    Поблагодарил(а)
    1,822
    Получено благодарностей: 243 (сообщений: 136).

    Talking


    Оффтопик
    алывердык

+ Ответить в теме

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

     

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
Рейтинг@Mail.ru
Администрация сайта не выражает согласия
с высказыванием участников форума и не несет
ответственности за их содержание.

Копирование любого материала возможно только
при наличии ссылки на сайт.