我正面臨一些麻煩,試圖解決此問題。我有一個帳戶圖表,我想總結一下錢的專欄。我的表「類別」有一個自動relathionsip:Mysql/PHP - 帳戶圖表 - 總帳在父帳戶
category_table
- id
- parent_id
- category
**我不知道帳戶圖表有多深。它可以有1,2,3,4,5 ...多個級別。
下面是一個例子:
我想:
Category Name |$
-------------------------------
Category 1 |160.00
Category 1.1 |130.00
some expense | 50.00
some expense | 80.00
Category 1.2 | 30.00
some expense | 10.00
some expense | 20.00
-------------------------------
Category 2 |160.00
Category 2.1 |150.00
some expense |100.00
some expense |150.00
Category 2.1 | 70.00
some expense | 50.00
some expense | 20.00
-------------------------------
我有什麼:
Category Name |$
-------------------------------
Category 1 | 0.00
Category 1.1 | 0.00
some expense | 50.00
some expense | 80.00
Category 1.2 | 0.00
some expense | 10.00
some expense | 20.00
-------------------------------
Category 2 | 0.00
Category 2.1 | 0.00
some expense |100.00
some expense |150.00
Category 2.1 | 0.00
some expense | 50.00
some expense | 20.00
-------------------------------
我試圖在PHP這個遞歸函數,但它沒有工作=/
function display_children($parent) {
$sql = "SELECT c.id, c.category,
(SELECT COUNT(*) FROM category c1 WHERE c1.parent_id = c.id) As Total,
(SELECT SUM(p.value) FROM payables p WHERE p.category_id = c.id) As TotalToPay
FROM category c
WHERE c.parent_id = {$parent}
ORDER BY c.category";
$result = mysql_query($sql);
$ret = "<ul>";
$totalcategory = 0;
while ($row = mysql_fetch_assoc($result)) {
if ($row['Total'] > 0) {
$totalcategory = $totalcategory + (empty($row['TotalToPay']) ? 0 : $row['TotalToPay']);
$ret .= "<li><a href='#" . $row['id'] . "'>" . $row['category'] . " - " . $totalcategory . "</a>";
$ret .= display_children($row['id']);
$ret .= "</li>";
} elseif ($row['Total']==0) {
$totalcategory = ($totalcategory + empty($row['TotalToPay']) ? 0 : $row['TotalToPay']);
$ret .= "<li><a href='" . $row['id'] . "'>" . $row['category'] . " - " . $totalcategory . "</a></li>";
} else;
}
$ret .= "</ul>";
return $ret;
}
echo display_children(0);
這表明我:
Category 1 - 0
Category 1.1 - 0
Category 1.2 - 0
expense 1 - 25.90
expense 2 - 0
expense 3 - 3.80
Category 2 - 0
Category 2.1 - 0
Category 2.2 - 0
Category 2.3 - 0
Category 3 - 0
Category 3.1 - 52.00
...任何想法? ...謝謝:)
向我們展示您嘗試的遞歸函數。 – Kermit
我編輯了問題 –