Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
59 / 59 / 16
Регистрация: 14.06.2010
Сообщений: 1,190
Записей в блоге: 5
1

Выборка комментариев с одним вложенным уровнем

09.03.2015, 05:02. Показов 488. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Должно получиться дерево вида:
Код
array(5){
  [1]=>array(99){
      'field'=>'...',
      'field'=>'...',
      'field'=>'...',
            .............
      //если есть у него p_id (родительский коммент), то создается вложенный массив 'childs'
      'childs'=array(99){  
              'field'=>'...',
              'field'=>'...',
              // и тд..
      }
  }
}
Но у меня получается такое
Код
array(4) {
  [1]=>
  array(14) {
    ["id"]=>
    string(1) "5"
    ["section"]=>
    string(5) "match"
    ["el_id"]=>
    string(3) "773"
    ["p_id"]=>
    string(1) "0"
    ["avt_id"]=>
    string(4) "8189"
    ["adr_id"]=>
    NULL
  }
  [2]=>
  array(14) {
    ["id"]=>
    string(1) "4"
    ["section"]=>
    string(5) "match"
    ["el_id"]=>
    string(3) "773"
    ["p_id"]=>
    string(1) "0"
    ["avt_id"]=>
    string(4) "8189"
    ["adr_id"]=>
    NULL
  }
  [3]=>
  array(14) {
    ["id"]=>
    string(1) "3"
    ["section"]=>
    string(5) "match"
    ["el_id"]=>
    string(3) "773"
    ["p_id"]=>
    string(1) "0"
    ["avt_id"]=>
    string(4) "8189"
    ["adr_id"]=>
    NULL
  }
  [5]=>
  array(1) {
    ["childs"]=>
    array(1) {
      [0]=>
      array(14) {
        ["id"]=>
        string(1) "6"
        ["section"]=>
        string(5) "match"
        ["el_id"]=>
        string(3) "773"
        ["p_id"]=>
        string(1) "5"
        ["avt_id"]=>
        string(4) "8189"
        ["adr_id"]=>
        string(4) "9898"
      }
    }
  }
}
Выборку и сортировку делаю так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    public function getFromEl($id){
        $sql  = "SELECT c.*,"
                . "u.login AS avt_login,u.opt_avatar AS avt_ava, "
                . "u2.login AS adr_login,u2.opt_avatar AS adr_ava "
                . "FROM comments c "
              . "LEFT JOIN users u ON u.id=c.avt_id "
              . "LEFT JOIN users u2 ON u2.id=c.adr_id "
              . "WHERE c.el_id=$id ORDER BY c.date_create DESC";
        $q = $this->user->dbh->query($sql);
        $r = $q->fetchAll(PDO::FETCH_ASSOC);
        if(count($r)>0){
            return $this->mapTree($r);
        }
        return NULL;
    }
 
    private function mapTree($dataset) {
        $tree = array();
        foreach ($dataset as $id=>&$node) {
            if (!$node['p_id']) {
                $tree[$id] = &$node;
            } else {
                $dataset[$node['p_id']]['childs'][$id] = &$node;
            }
        }
        return $tree;
    }
Так же еще получаю "Undefined index: p_id" в строке: $dataset[$node['p_id']]['childs'][$id] = &$node;
Помогите разобраться!
p.s. скрин структуры таблицы
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2015, 05:02
Ответы с готовыми решениями:

Преобразование в массив с одним уровнем вложенности
Есть масив: , ], ] Написать программу, которая преобразует заданный массив с несколькими...

Выборка последних комментариев из 2х таблиц БД
всем привет. нужно выбрать по 1 последнему комментарию (столбец text) каждого юзера и вывести имя...

Выборка одним запросом
Имеется: - таблица 'справочник параметров': id,paramname - основная таблица:...

Выборка одним запросом
Не могу сообразить как сделать выборку такого рода одним запросом. Есть две таблицы: chases_1 и...

0
09.03.2015, 05:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.03.2015, 05:02
Помогаю со студенческими работами здесь

Выборка из БД одним запросом
Всем доброго времени! У меня возник такой вопрос, есть 3 таблицы в одной базе как сделать выборку...

Сложная выборка одним запросом
Доброго времени суток! Существует таблица Domain create table domain( int id auto increment,...

Выборка из трех таблиц одним запросом
Доброго времени суток! У меня есть такие вот таблицы В PostgreSql я не сильно силен:( Нужно...

Выборка за разные даты одним запросом
Всем привет. Есть (на пример) 2 таблицы 1) ID | Товар | Тип товара 2)ID товара | Дата...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru