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 категории...)
Подскажите люди добрые пожалуйста А то уже пол дня сижу ничего толком спроектировать немогу.
Спустя 7 минут, 40 секунд (26.07.2010 - 14:11) linker написал(а):
А child на что ссылается?
Спустя 3 минуты, 27 секунд (26.07.2010 - 14:15) amazing написал(а):
child на id категори из первой таблицы, и parent тоже.
В таблице category_ch идет распределение какие категории родительские, а какие дочерние, и их принадлежность
В таблице 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, которые являются дочерними элементами. Тогда запрос бы получился простой и без извратов
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... Легче будет построить запрос, чем потом лопатить код...
Спасибо за подсказки, понял в каком направлении надо мыслить!
Спасибо за подсказки, понял в каком направлении надо мыслить!