2015-10-27 65 views
3

我有一個有3列的表。 id, parent_id and text。我想返回一個id的所有parent id函數..我想獲得一個ID的所有父ID的數組

enter image description here

假設我傳遞參數4它是ID,陣列應返回4,3,2,1因爲3是4母體,2是3的父親和類似的,1是2的父親。 我該如何做到這一點?

到目前爲止,我已經嘗試過。但是,這是返回數組..

function getTree($id){ 
    $arr = array(); 
    $parent = mysql_query("SELECT parent_id FROM task WHERE id = '".$id."'"); 
    $parent_query = mysql_fetch_assoc($parent); 
    if ($parent_query['parent_id']==0){ 
     echo "This is the parent"; 
    } else { 
     $arr[] = $id; 
     $arr[] = $parent_query['parent_id']; 
     $arr[] = getTopTree($parent_query['parent_id']); 
     echo '<pre>'; 
     print_r($arr); 
     echo '</pre>'; 
    } 
} 
+0

嗨,只是爲了好奇,但你有沒有讀過[this](http://mattgemmell.com/what-have-you-tried/)? – Naruto

+0

到目前爲止你試過了什麼? –

+0

你能更清楚一點嗎? I – Vini

回答

3

您可以創建自己的自定義函數等作爲

function checkParentIds($id, $data = array()) { 
    $parent = mysql_query("SELECT parent_id FROM task WHERE id = '$id'"); 
    $parent_query = mysql_fetch_assoc($parent); 
    if ($parent_query['parent_id'] > 0) { 
     $data[] = $parent_query['parent_id']; 
     checkParentIds($parent_query['parent_id'], $data); 
    } else { 
     $parent_result = (empty($data)) ? 1 : implode("','", $data); 
    } 
    return $parent_result; 
} 
+1

它完美的作品。就一件事。我希望'id'本身成爲字符串的一部分。我怎麼做? –

+0

如果我把'4'作爲'id',我應該得到'4,3,2,1'而不是'3,2,1' –

+0

如果條件簡單地使用'$ data [] = $ id;' –

1
select id, group_concat(parent_id) as parents, test <yourtable> group by id; 

,然後在PHP你可以檢索爆炸行的相應列:

// ... retrieving all the rows stuff 
$parentsIds = explode(',', $row['parents']);