[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выборка категорий и подкатегорий
boomber
Здравствуйте.
Подскажите принцип вывода информации из БД.
Есть таблица с категориями cat (cat_1, cat_2, cat_3...), для каждой категории есть подкатегории (cat_1_1, cat_1_2... cat_2_1, cat_2_2...).
Надо вывести в первый выпадающий список категории. И во втором выпадающем списке ниже чтобы выводились соответствующие подкатегории.



Спустя 18 минут, 30 секунд (25.10.2011 - 09:25) redreem написал(а):
традиционно дерево категорий хранится так:
cat=>(id,parentId,name)

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

Спустя 9 минут, 17 секунд (25.10.2011 - 09:35) boomber написал(а):
Ну фактически это одна таблица вида:
cat | subcat |
cat_1 | cat_1_1 |
cat_1 | cat_1_2 |
cat_2 | cat_2_1 |
cat_2 | cat_2_2 |
cat_2 | cat_2_3 |

Соответственно, хочу получить в первом выпадающем списке категории (DISTINCT cat), а в выпадающем списке ниже соответствующие подкатегории (DISTINCT subcat WHERE cat=cat_1). С запросами проблем нет. А вот как сделать зависимые <option> что-то не разобрался.

Извиняюсь, что не скрин таблицы, нахожусь на работе.

Спустя 10 минут, 26 секунд (25.10.2011 - 09:45) redreem написал(а):
зависимые options сделать в html нельзя. в этом случае нужно чтобы при изменении корневого селекта javascript заменял содержимое дочернего селекта соответствующим списком. скрипт не сложный, 2-3 часа писанины. если готовы оплатить - могу сделать.

Спустя 30 минут, 29 секунд (25.10.2011 - 10:16) boomber написал(а):
Да у меня, собственно эта задача в качестве хобби.

Спустя 14 минут, 36 секунд (25.10.2011 - 10:30) SlavaFr написал(а):
если дерево глубиной только в одну подкатегорию, то селектируеш таблицу с order by cat, subcat и делаеш опции во прямо во время вывода.
принцип простой, если b актуальной строчке название категории не равно предыдущей, то закрваеш предыдущий селект (если имеется) и наченаеш новый.

Спустя 37 минут, 58 секунд (25.10.2011 - 11:08) boomber написал(а):
Цитата (SlavaFr @ 25.10.2011 - 07:30)
если дерево глубиной только в одну подкатегорию, то селектируеш таблицу с order by cat, subcat и делаеш опции во прямо во время вывода.
принцип простой, если b актуальной строчке название категории не равно предыдущей, то закрваеш предыдущий селект (если имеется) и наченаеш новый.

Спасибо. Буду думать, сразу не очень понял.

Спустя 57 минут, 24 секунды (25.10.2011 - 12:06) SlavaFr написал(а):
гдето так ...
если не ошибся :)
$is_started=false;
$actual_cat=false;
...

$res=mysql_query('select * from xxxxx order by cat ,| subcat') or die(mysql_error());

while($line=mysql_fetch_array($res)){
if($line['cat']!=$actual_cat){
if($is_started){
echo '</select>';
}else{
$is_started=true;
}
echo '<select name="'.$line['cat'].'">';
}
echo '<option value="'.$line['subcat'].'" >'$line['subcat'].'</option>';
}
echo '</select>';
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.