Неверно задаю массив в php запросе

296
12 января 2017, 07:48

Здравствуйте, уважаемые пользователи стака. Ошибка состоит с вытягиванием категорий с БД. БД лежит на хостинге, и выглядит она так:

Пишу я структуру с помощью фреймворка Codeigniter. Скрипт в модели вот такой:

    public function get_cat() {
    $db_mysql = $this->load->database('zhaimakz_products', TRUE);
    $query =  $db_mysql->get('categories'); // моя таблица
   foreach($query->result_array() as $row ) {
       if (!$row['parent']) { // если нет поля blog_parent_id, то есть подкатегории
           $data[$row['id']][] = $row['title']; // выводим только назву категории
       }
       else {
           $data[$row['id']][] = $row['title'];
           $data[$row['parent']]['sub'][$row['id']] = $row['title'];
       }
   }
    return $data;
}

Вывод категорий:

<?php foreach($blog_categories as $key => $item): ?> 
                            <?php if(count($item) > 1): // якщо це під категорія ?> 
  <div class="panel-heading"> 
    <h4 class="panel-title"> 
      <a data-toggle="collapse" data-parent="#accordian" href="#womens"><span class="badge pull-right"><i class="fa fa-plus"></i></span> 
        <a href="javascript:;"><?='1'.$item[0]?></a> 
      </a> 
    </h4> 
  </div> 
  <div id="womens" class="panel-collapse collapse"> 
    <div class="panel-body"> 
      <li><a href="<i>Нужно поставить ссылки</i>/<?=$key?>"></a>         </li><?php foreach($item['sub'] as $key => $sub): ?> 
      <li><a  href="<i>Нужно поставить ссылки</i>/<?=$key?>"><?='3'.$sub?></a></li> 
<?php endforeach; ?> 
</div> 
</div> 
<?php elseif($item[0]):?> 
<li><a href="<i>Нужно поставить ссылки</i>/<?=$key?>"><?='2'.$item[0]?></a></li> 
<?php endif; ?> 
<?php endforeach; ?>

Выводит категории неправильно:

Подскажите пожалуйста в чем может быть дело?

Answer 1

Попробуйте выборку формировать так:

foreach($query->result_array() as $row ) {
    if (!$row['parent']) {
        // категория 1 уровня
        $data[$row['id']]['title'] = $row['title'];
    } else {
        // подкатегория
        $data[$row['parent']]['sub'][$row['id']] = $row['title'];
    }
}

А в ответе выводить title, а потом перебор по sub

READ ALSO
Что такое $_SERVER[&#39;REQUEST_URI&#39;], Почему там полный адрес сторонних сайтов?

Что такое $_SERVER['REQUEST_URI'], Почему там полный адрес сторонних сайтов?

Начал собирать простенькую статистику на сайтеРешил в том числе отслеживать на какой странице именно находится пользователь (по какому...

333
Изменить качество видео с помощью php

Изменить качество видео с помощью php

Нужно при загрузке видеофайла на сервер сохранять его в исходном и хуже качествах с расширением avi или mp4Как это можно реализовать?

336
AJAX: добиться эффекта require из PHP

AJAX: добиться эффекта require из PHP

Как добиться эффекта, аналогичному

283
Ошибка: Warning: Illegal string offset

Ошибка: Warning: Illegal string offset

Немного покурочил класс Walker_Nav_Menu в worpress, цель была заменить стандартные классы меню, на своиВот код:

348