Может есть более лёгкое решение? Много сайтов облазил, но в итоге не чего не нашёл( Нужно чтобы у вложенного меню нумерация начиналась не с 0 а с 1(
view
<div class="categories">
<nav>
<ul>';
if($category){
foreach($category as $key => $name){
if($name['parent']){
echo '<li><a href="'.$key.'" title="#">'.$name[0].'<span>'.count($name['parent']).'</span></a>
<ul>';
foreach($name['parent'] as $key => $item){
echo '<li><a href="'.$key.'" #0 unset($key) title="#">'.$item.'</a></li>';
}
echo '</ul>
</li>';
}
else{
echo '<li><a href="'.$key.'" title="#">'.$name[0].'<span>0</span></a>';
}
}
}
echo '</ul>
</nav>
</div>
Вспомогательный класс модели
public function get_category(){
$result = $this -> ins_driver -> category();
foreach($result as $item){
if($item['category_id_parent'] == 0){
$cat[$item['category_id']][] = $item['name'];
}
else{
$cat[$item['category_id_parent']]['parent'][] = $item['name'];
}
}
return $cat;
}
Сама модель
public function category(){
$sql = "SELECT `category_id`, `category_id_parent`, `name`, `description` FROM `category`";
$result = $this -> ins_db -> query($sql);
if(!$result){
throw new DbException('Ошибка запроса: '.$this -> ins_db -> connect_errno.' | '.$this -> ins_db -> connect_error);
}
if($result -> num_rows === 0) return FALSE;
for($i = 0; $i < $result -> num_rows; $i++){
$row[] = $result -> fetch_assoc();
}
return $row;
}
В итоге:
Array
(
[1] => Array
(
[0] => HTML 5
[parent] => Array
(
[0] => ШРИФТЫ
[1] => ЗАГОЛОВКИ
[2] => ССЫЛКИ
)
)
[2] => Array
(
[0] => CSS 3
)
[3] => Array
(
[0] => JAVA SCRIPT
)
[4] => Array
(
[0] => JQUERY
)
[5] => Array
(
[0] => C#
)
[6] => Array
(
[0] => PHP
)
[7] => Array
(
[0] => MYSQL
)
)