Всем привет, не могу догнать как сортировать категории и подкатегории. Имею таблицу в БД (id, parent_id, name). Нужно выводить категорию, а под ней все подкатегории. Может быть реально на уровне MySQL? Помогите или поделитесь алгоритмом плиз. Заранее благодарю.
sql PHP: CREATE TABLE `tree` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `parent` INT NOT NULL , `title` VARCHAR(255) NOT NULL, ... ); PHP: function &LoadTree( $table ){ // загружаем данные из базы во вспомогательный массив $raw, в котором индексом будут id вершин дерева $sqlresult = mysql_query( 'SELECT * FROM `'.$table.'`' ); $raw = array(); while( $item = mysql_fetch_assoc( $sqlresult ) ){ $item['subitems'] = array(); $raw[ $item['id'] ] = $item; } // строим само дерево $tree = array(); foreach( $raw as $id=>&$item ) if( array_key_exists( $item['parent'], $raw ) ) // если есть родительская вершина в дереве $raw[ $item['parent'] ]['subitems'][ $id ] =& $item; else // иначе - это вершина верхнего уровня $tree[ $id ] =& $item; // дерево построенно, возвращаем его из ф-ии return $tree; } PHP: function ShowTree( &$tree ){ echo '<ul>'; foreach( $tree as &$item ){ echo '<li>'.$item['title']; if( ! empty($item['subitems']) ) ShowTree( $item['subitems'] ); echo '</li>'; } echo '</ul>'; } $tree =& LoadTree( 'table_name' ); ... ShowTree( $tree );