- Автор темы
- #1
Приветствую!
Есть функция, которая достает и выводит из базы записи, многоуровневого меню:
Список категорий выводится как нужно, но проблема в том, что не могу построить массив для передачи в smarty, а там уже перебирать и выводить, подскажите, плиз, как это правильно сделать
Есть функция, которая достает и выводит из базы записи, многоуровневого меню:
PHP:
$q = q("SELECT `id`, `parent`, `name` FROM `category` order by `pos` ASC") ;
$category = array() ;
while($row = mysql_fetch_assoc($q)) $category[$row['parent']][] = $row ;
function build_tree($category, $parent) {
if(is_array($category) && count($category[$parent]) > 0) {
$tree = '<ul>' ;
foreach($category[$parent] as $row) {
$tree .= '<li><a href="'.$row['id'].'">'.$row['name']."</a>" ;
$tree .= build_tree($category,$row['id']) ;
$tree .= '</li>' ;
}
$tree .= '</ul>' ;
} else return null ;
return $tree;
}
echo build_tree($category,0) ;
Код:
CREATE TABLE IF NOT EXISTS `category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`active` int(11) NOT NULL,
`parent` int(11) NOT NULL,
`url` varchar(255) NOT NULL,
`title` varchar(255) NOT NULL,
`keywords` varchar(255) NOT NULL,
`description` varchar(255) NOT NULL,
`image` varchar(255) NOT NULL,
`text` text NOT NULL,
`pos` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;
--
-- Dumping data for table `category`
--
INSERT INTO `category` (`id`, `name`, `active`, `parent`, `url`, `title`, `keywords`, `description`, `image`, `text`, `pos`) VALUES
(1, 'Мобильные телефоны', 1, 0, 'mobilnye_telefony', 'Мобильные телефоны', 'Мобильные телефоны', 'Мобильные телефоны', '', 'Мобильные телефоны', 1),
(2, 'Бытовая техника', 1, 0, 'bytovaya_tehnika', 'Бытовая техника', 'Бытовая техника', 'Бытовая техника', '', 'Бытовая техника', 0),
(3, 'Пылесосы', 1, 2, 'pylesosy', 'Пылесосы', 'Пылесосы', 'Пылесосы', '', 'Пылесосы', 2),
(4, 'Миксеры ', 1, 2, 'miksery', 'Миксеры ', 'Миксеры ', 'Миксеры ', '', 'Миксеры ', 0);
Список категорий выводится как нужно, но проблема в том, что не могу построить массив для передачи в smarty, а там уже перебирать и выводить, подскажите, плиз, как это правильно сделать