Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   как обновить список с учётом первого списка? (http://www.flasher.ru/forum/showthread.php?t=106202)

wildrain 06.01.2008 09:42

как обновить список с учётом первого списка?
 
Нужно, чтобы при выборе строки в первом списке происходило обновление второго списка с учётом выбранного параметра.

при выборе строки в SelectCategory происходило обновление списка SelectSubCategory КАААК???

Вот код.


Код:

        $SelectCategory = "<select name=SelectCategory onchange=$SelectSubCategory>\n\t<option value=\"\"></option>\n\t";

       
                //get the subcategories
                $q2 = "select * from re2_categories order by CategoryName ";
                $r2 = mysql_query($q2) or die(mysql_error());

                if(mysql_num_rows($r2) > '0')
                {
                        while($a2 = mysql_fetch_array($r2))
                        {
                                $SelectCategory .= "<option value=\"$a2[CategoryID]\">$a2[CategoryName]</option>\n";
                        }
       
                }

       

        $SelectCategory .= "</select>\n";


        $SelectSubCategory = "<select name=SelectSubCategory>\n\t<option value=\"\"></option>\n\t";

                //get the subcategories
                $q2 = "select * from re2_subcategories where CategoryID = '$a1[CategoryID]' order by SubcategoryName ";
                $r2 = mysql_query($q2) or die(mysql_error());

                if(mysql_num_rows($r2) > '0')
                {
                        while($a2 = mysql_fetch_array($r2))
                        {
                                $SelectSubCategory .= "<option value=\"$a2[SubcategoryID]\">$a2[SubcategoryName]</option>\n";
                               
                        }
                }

Помогите сделать...

kotsie 06.01.2008 11:48

таким образом это сделать не реально. PHP работает на серверной стороне, генерирует HTML-код, после чего шлёт его броузеру.
Варианты решения проблемы:
1. сохранить в JS все варианты пунктов правого списка, связанные с левым списком.
т.е.
data[пунк_первого_списка_1] = [варианты_второго_списка]
data[пунк_первого_списка_2] = [варианты_второго_списка]
и т.д. затем на onChange первому списку привязать подгрузку новых пунктов из этого массива.

2. можно на onChange делать сабмит формы в которой находится этот список и уже PHP-шкой генерить новые списки.

3. При помощи сокетов грузить на фоне данные для второго списка. опять же onChange

wildrain 06.01.2008 13:29

Цитата:

Сообщение от kotsie
Варианты решения проблемы:
1. сохранить в JS все варианты пунктов правого списка, связанные с левым списком.
т.е.
data[пунк_первого_списка_1] = [варианты_второго_списка]
data[пунк_первого_списка_2] = [варианты_второго_списка]
и т.д. затем на onChange первому списку привязать подгрузку новых пунктов из этого массива.

я что-то похожее и сделал: создал список все возможных вариантов , а там уже взависимости от выбранного параметра в первом списке не нужным присваивается type=hidden ... т.о. отображаются только нужные.

но этот вариант меня не очень устратвает т.к.

1) идёт нагрузка на память - как следствие сайт тупить будет;
2) неизвестно пока как он будет отображаться в разных браузерах.


Может есть ещё какие-нибудь мысли/варианты?

Vass 07.01.2008 01:05

Цитата:

Сообщение от wildrain
2) неизвестно пока как он будет отображаться в разных браузерах.

Браузер тут совершенно не причем.

как вариант стоит либо посмотреть в сторону технологии AJAX, либо пользовать Фреймы но это уж совсем извращение.

kotsie 08.01.2008 14:39

ну нагрузка на память - это зависит от количества пунктов, может статься что аяксы больше нагрузят. да и задержка в таком случае будет, а если всё сразу загрузить, то нет.

Skubent 08.01.2008 23:26

wildrain, это ты решил память пользователя поэкономить ?
Там минимум 10 мегабайт по нынешним временам есть свободной совершенно точно. А если предполагается в селектах по тысяче записей держать - это уже полная труба с юзабилити.
Что касается "неизвестно как оно" - сделать да посмотреть, делов-то...

Vass, одна из реализаций аякса подразумевает использование фреймов, никакого извращения. Поменьше слушайте сеотиков и побольше думайте.


Часовой пояс GMT +4, время: 11:58.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.