[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запрос к базе, и построение списка select
amazing
Имеется таблица сategory:

category_id | category_name
1 | Машини
2 | BMW
3 | AUDI
4 | Руль
5 | Kawasaki
6 | KTM
7 | Комплектующие
8 | Мотоциклы
9 | Аккамулятор
10 | Свечи

Так же имметься таблица category_ch:

parent | child
1 | 2
1 | 3
8 | 5
8 | 6
7 | 9
7 | 10
7 | 4


Нужно построить запрос к базе, и потом отсортировать это что бы вывести в форме в виде выпадающего списка <select>, в виде опшинов при этом чайлдовые категории, распологаются под родительскими отделяясь пару пробелами либо тире.... А в свойстве VALUE id категории...)

Подскажите люди добрые пожалуйста smile.gif А то уже пол дня сижу ничего толком спроектировать немогу.




Спустя 7 минут, 40 секунд (26.07.2010 - 14:11) linker написал(а):
А child на что ссылается?

Спустя 3 минуты, 27 секунд (26.07.2010 - 14:15) amazing написал(а):
child на id категори из первой таблицы, и parent тоже.

В таблице category_ch идет распределение какие категории родительские, а какие дочерние, и их принадлежность

Спустя 1 час, 40 минут, 52 секунды (26.07.2010 - 15:55) SlavaFr написал(а):
в таком виде как ты составил таблицы, без многоразавых запросов не обойтись. Прейдется рекурсивную функцию писать.


я написал код, не проверя.
возможны ошибки (синтактические и логические).!!!!

function select_requrziv($parent=false,$level=0,$repiat='-'){
//root
if(!$parent){
$sql=" select category_id , category_name from сategory where category_id
not in(select child from category_ch)"
;
}else{
$sql=' select category_id , category_name from сategory
inner join category_ch on сategory.category_id=category_ch.child
where parent='
.$parent;
}

$link= ...query($sql) or die(...error());
if(....num_rows($link)){
while($r=..fetch_assoc($link)){
echo '<option value="'.$r['category_id'].'" >';
echo str_repeat($repiat,$level).$r['category_name'];

select_requrziv($r['category_id'],$level+1,$repiat);

}
}

return ;
}

Спустя 16 часов, 5 минут, 11 секунд (27.07.2010 - 08:01) linker написал(а):
Я бы переделал структуру базы. Как есть сейчас - это противоречие здравому смыслу. Надо сделать две таблицы: category оставить как есть, category_ch удалить и добавить новую таблицу items со структурой
item_id | parent_id | item_name
После этого переместить в эту таблицу записи из category, которые являются дочерними элементами. Тогда запрос бы получился простой и без извратов
select * from category
left join items on parent_id = category_id
order by category_id asc, item_id asc

Спустя 57 минут, 22 секунды (27.07.2010 - 08:58) amazing написал(а):
Я бы с радостью переделал, да эта таблица с CMS... Легче будет построить запрос, чем потом лопатить код...
Спасибо за подсказки, понял в каком направлении надо мыслить!
Быстрый ответ:

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