1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Как сделать вывод зависимых списков?

Тема в разделе "Web Coding", создана пользователем danneo, 9 ноя 2012.

Модераторы: latteo
  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.463
    Симпатии:
    114
    Нужно при выборе из списка категории, чтобы появлялся другой выпадающий список с подкатегориями выбранной категории. В общем, зависимые списки.
    Как вариант, можно чтобы 2-й список не появлялся, а всегда был, если это упростит работу.
    Как это делается? Никаких JS, ajax не знаю, только php :)
     
  2. Leony

    Leony

    Регистр.:
    18 мар 2008
    Сообщения:
    153
    Симпатии:
    25
  3. Dimik

    Dimik Создатель

    Регистр.:
    18 сен 2011
    Сообщения:
    21
    Симпатии:
    0
    Можно написать функцию вывода списка категории, например если вы выбираете категории из базы и в этой функции проверять нет ли дочерней категории и если она существует вызвать туже функцию, получается рекурсивная функция. Примерно такая логика.
     
  4. arsen

    arsen НЕрядовой

    Регистр.:
    16 июн 2011
    Сообщения:
    881
    Симпатии:
    309
  5. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.463
    Симпатии:
    114
    первый пост читается? Зачем мне меню?
     
  6. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.728
    Симпатии:
    2.105
    ты решил проблему или всё также в поиске решения?
    в чём хранятся списки, категорий и подкатегорий? важно ли чтоб страница не перезагружалась при выборе категории?

    самое простое решение это так называемый аутопостбэк на первом списке на сервер, где ты смотришь, какая категория пришла на сервер и ты можешь подгрузить подкатегории в другой спиоск и отдать контент на клиента.
    http://phptools.blogspot.com/2011/08/auto-post-back-combobox-or-drop-down-in.html
     
  7. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.463
    Симпатии:
    114
    Не решил. Нужно без перезагрузки. Категория и подкатегория в разных таблицах. За пример спасибо, буду переводить :)
     
    ipbfan2008 нравится это.
  8. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.728
    Симпатии:
    2.105
    если без перезагрузки то нужно будет использовать ajax, присмотрись к jquery, как ребята советовали. там достаточно просто всё делается, благо примеров множество. особое внимание обрати на то, как ты будешь делать запрос в базу на основе того, что пришло с вэба, самое главное убедится в отсутсвии sql injection, либо хорошо фильтруя и обрабатывая входящие параметри, либо используя параметризированные запросы. а лучше оба подхода.

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

    ruslod Писатель

    Заблокирован
    Регистр.:
    23 дек 2012
    Сообщения:
    25
    Симпатии:
    0
    Задача предельно проста. Проще всего использовать подгрузку на jQuery. jQuery обращается к PHP скрипту, который в свою очередь выполняет запрос к базе данных и возвращает данные.
     
  10. ruslod

    ruslod Писатель

    Заблокирован
    Регистр.:
    23 дек 2012
    Сообщения:
    25
    Симпатии:
    0
    Код:
     
    //твои категории
    <select id="cats">
        <option value="option1" selected="selected">Категория 1</option>
        <option value="option2"> Категория 2</option>
    </select>
     
    //тут, внутри дива, список товаров
    <div id="products">
    </div>
     
    <script type="text/javascript">
    $('#cats').change(function() { //событие выбора из списка
      // если можно выбрать только одну категорию, то получаешь её
      str = $('#cats).val();
     
      //если категорий несколько, то можешь собрать их названия из списка  вот так
      $("#cats option:selected").each(function () {
                str += $(this).text() + ";";
      });
     
    // отправляешь запрос на свой сервер, посылаешь название категории
      $.post("test.php", { cats: str },
      // функция вызывается при получении правильного ответа (с кодом 200)
      function(data) {
        $('#products').html(data); //наполняешь div содержимым - ответом сервера, где генерируешь список товаров исходя из выбранной категории
      });
     
    });
    </sctipt>