Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2017, 22:51   #21
Сэмми
Заблокирован
 
Регистрация: 05.11.2017
Сообщений: 18
По умолчанию

через Ул-Ли пробовали?
Сэмми вне форума Ответить с цитированием
Старый 05.11.2017, 23:04   #22
Kef1r
Форумчанин
 
Регистрация: 13.05.2016
Сообщений: 111
По умолчанию

Спасибо. В общем теперь по клику из списка <li> формируется еще один список <select>, все работает. Но, я хочу сделать, чтобы по выбранному элементу в <select> формировался еще один список <select>.
Тоесть схема работы такая: [Кликаю по списку]-->[Формируется список]-->[Выбираю элемент в новом списке]-->[Формируется еще 1 список].
И я не могу понять как мне это реализовать.
Допустим, я получаю ID элемента в атрибут value в command2.php

Код:
while ($row = $query->fetch()) {
        echo "<option value='{$row->ID}'>{$row->Name}</option>";
    }
И далее этот ID необходимо передать в скрипт:
Код:
           $(function(){
                $(".list").change(function(){
                    var ID=$(".list").val(); // и вот я типа передал

                    $.ajax({
                        type:"POST",
                        url: "select2.php",
                        data:{ID:ID},
                        success:function(data){
                            $(".slave").html(data);  
                        }
                    });
                });
            });
НО, я не понимаю к какому файлу мне подключать этот скрипт, к главному index.php или к command2.php
Если вы меня поняли, то подскажите пожалуйста, как это можно реализовать?

Последний раз редактировалось Kef1r; 05.11.2017 в 23:06.
Kef1r вне форума Ответить с цитированием
Старый 05.11.2017, 23:35   #23
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Ну у тебя же в index все списки отображаются – там и прописывай обработчик для второго списка.
command2 – это просто формирование и передача второго списка.
А все действия с ним – происходят уже в index.
Andkorol вне форума Ответить с цитированием
Старый 05.11.2017, 23:46   #24
Kef1r
Форумчанин
 
Регистрация: 13.05.2016
Сообщений: 111
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Ну у тебя же в index все списки отображаются – там и прописывай обработчик для второго списка.
command2 – это просто формирование и передача второго списка.
А все действия с ним – происходят уже в index.
Да, я так сразу и подумал, но проблема в том, что select2.php не получает ID.
А не получает он его скорее всего потому, что ID я получаю в command2.php, а не в index. Вот в этом вся загвоздка. Не могу понять как решить
Kef1r вне форума Ответить с цитированием
Старый 06.11.2017, 00:08   #25
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Kef1r Посмотреть сообщение
select2.php не получает ID.
А не получает он его скорее всего потому, что ...
Опять 25...
Чего гадать-то – когда в браузере есть консоль и вкладка Network..?
Всё ж легко и просто отдебажить.
Andkorol вне форума Ответить с цитированием
Старый 06.11.2017, 00:22   #26
Kef1r
Форумчанин
 
Регистрация: 13.05.2016
Сообщений: 111
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Опять 25...
Чего гадать-то – когда в браузере есть консоль и вкладка Network..?
Всё ж легко и просто отдебажить.
Ну вот смотрите, жму я на первый список, выполняется command2.php и появляется второй список(select). Как это выглядит на вкладке network показано на первом скрине.
Далее выбираю один из элементов списка select и выполняется select2.php. Скрин вкладки network также прикладываю. В консоли ошибок нет.
И какие выводы из этой информации я могу сделать?
Изображения
Тип файла: jpg command2.jpg (62.9 Кб, 139 просмотров)
Тип файла: jpg select2.jpg (59.6 Кб, 139 просмотров)

Последний раз редактировалось Kef1r; 06.11.2017 в 00:24.
Kef1r вне форума Ответить с цитированием
Старый 06.11.2017, 00:55   #27
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Kef1r Посмотреть сообщение
И какие выводы из этой информации я могу сделать?
Такие, что на втором скрине глазами же видно, что в select2 ID не передаётся.
Это происходит потому, что второй список был добавлен в тело страницы динамически – и поэтому он отсутствует в изначальном DOM-дереве, с которым работает jQuery.
Это значит, что обработать событие с его участием так просто через .change() не получится.
Значит, нужно просто создать функцию, которая будет обращаться к элементам на странице, которые существуют непосредственно на момент её вызова – а не в изначальном DOM страницы.
Объяснять это долго – поэтому вот простой пример для разбора:
index.php:
Код:
<select id="list1" onchange="getList(this.id, 'list2block', 1);">
    <option value="0">-- Select 1 --</option>
    <option value="1">List 1 1</option>
    <option value="2">List 1 2</option>
    <option value="3">List 1 3</option>
</select>

<div id="list2block" style="margin-top: 25px"></div>
<div id="list3block" style="margin-top: 25px"></div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script type="text/javascript">

    /**
     * получение связанного списка
     * @param  {[type]} id           ID текущего списка для получения его значения
     * @param  {[type]} target_id    ID элемента, в который будет помещён новый список
     * @param  {[type]} list         контрольный идентификатор текущего списка – для подгрузки различных по структуре или запросам к БД списков
     */
    function getList(id, target_id, list){
        $.post(
            '/lists/select.php',
            {
                list: list,
                ID: $('#'+id).val()
            },
            function(data){
                $('#'+target_id).html(data);
            },
            'html'
        );
    }

</script>
select.php:
PHP код:
<?php
$html 
'No data';
if (!empty(
$_POST['ID']) && ($_POST['list'] == 1)) {
    
$html '<select id="list2" onchange="getList(this.id, \'list3block\', 2)">';
    
$html .= '<option value="0">-- Select 2 --</option>';
    
$html .= '<option value="1">List 2 1</option>';
    
$html .= '<option value="2">List 2 2</option>';
    
$html .= '<option value="3">List 2 3</option>';
    
$html .= '</select>';
}
elseif (!empty(
$_POST['ID']) && ($_POST['list'] == 2)) {
    
$html '<select id="list3">';
    
$html .= '<option value="0">-- Select 3 --</option>';
    
$html .= '<option value="1">List 3 1</option>';
    
$html .= '<option value="2">List 3 2</option>';
    
$html .= '<option value="3">List 3 3</option>';
    
$html .= '</select>';
}
echo 
$html;
?>
Andkorol вне форума Ответить с цитированием
Старый 06.11.2017, 01:12   #28
Kef1r
Форумчанин
 
Регистрация: 13.05.2016
Сообщений: 111
По умолчанию

Andkorol, спасибо вам большое за уделенное время на мою проблему. Очень помогли.
Kef1r вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод элементов выпадающего списка. Ankumo JavaScript, Ajax 5 11.07.2016 15:43
Вывод списка на экран Kir94 Паскаль, Turbo Pascal, PascalABC.NET 6 16.10.2015 22:06
Вывод списка символов справа налево 5 раз подряд и исключить вывод цифр Gareek Помощь студентам 2 23.12.2011 21:41
DBcomboBox и вывод списка andrenisimus БД в Delphi 4 28.10.2010 16:33
С# вывод списка файлов в директории Айат Помощь студентам 3 28.11.2009 11:43