sanu0074
Новичок
Должно получиться дерево вида:
Но у меня получается такое
Выборку и сортировку делаю так:
Так же еще получаю "Undefined index: p_id" в строке: $dataset[$node['p_id']]['childs'][$id] = &$node;
Помогите разобраться!
p.s. скрин структуры таблицы
![](/talk/proxy.php?image=http%3A%2F%2Fs1.hostingkartinok.com%2Fuploads%2Fthumbs%2F2015%2F03%2F4266d258cc1699e5b64e04563175b7cc.png&hash=0334bcfcb4f8fd1c2bdda030e420f753)
Код:
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:
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;
}
Помогите разобраться!
p.s. скрин структуры таблицы
![](/talk/proxy.php?image=http%3A%2F%2Fs1.hostingkartinok.com%2Fuploads%2Fthumbs%2F2015%2F03%2F4266d258cc1699e5b64e04563175b7cc.png&hash=0334bcfcb4f8fd1c2bdda030e420f753)