【发布时间】:2017-08-30 08:00:36
【问题描述】:
我想通过分组来分隔项目名称,然后显示详细信息。根据我的代码,它显示了详细信息,但只是在一行中。另外我没有求和功能。
输出应该是这样的
Month | Contract Amount | Investment | Expense
Project Name 1
Jan | $9000 | $9000 | $100
Feb | $10000 | $5000 | $500
Total: | $19000 | $14000 | $600
Project Name 2
Jan | $50000 | $2500 | $10000
Feb | $10000 | $5000 | $500
Mar | $20000 | $4500 | $1500
Total: | $80000 | $12000 | $1200
我的源代码。
项目名称是“pn”
<?php
$pdo = Database::connect();
$sql = 'SELECT *, tt_projects.name as pn, tt_projects.id
FROM tt_client_project_binds
INNER JOIN tt_projects
ON tt_client_project_binds.project_id = tt_projects.id
INNER JOIN rms_projects_budget
on rms_projects_budget.project_id = tt_projects.id';
$stmt = $pdo->prepare($sql);
$stmt->execute();
$categories = array();
while (($row = $stmt->fetch(PDO::FETCH_ASSOC)))
{
$category = $row['pn'];
$categories[$category][] = date('F', strtotime($row['month']));
$categories[$category][] = $row['pn'];
$categories[$category][] = $row['Contract_Amount'];
$categories[$category][] = $row['investment'];
$categories[$category][] = $row['expense'];
}
?>
<html>
<body>
<?php
foreach ($categories as $category => $consumption)
{
?>
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>Month</th>
<th>Contract Amount</th>
<th>Investment</th>
<th>Expense</th>
</tr>
</thead>
<tbody>
<h4><?php echo $category; ?></h4>
<?php
foreach ($consumption as $details)
{
?>
<td><?php echo $details; ?></td>
<?php
}
?>
<?php
}
?>
</body>
</html>
非常感谢您的帮助。提前谢谢!
【问题讨论】:
-
1.不要使用邪恶的
SELECT *。命名您想要的列。 2. 查看表别名。它们使代码更易于阅读并且意味着更少的输入。 -
完成,谢谢!
-
能简单解释一下tt_client_project_binds、tt_projects、rms_projects_budget的表结构吗?
-
因为乍一看,你上面的sql和表结构中的tt_client_project_binds似乎是多余的,当你可以简单地链接tt_projects和rms_projects_budget时
标签: php mysql sql datatables grouping