我有2个表(费用,描述)我的问题是如何在按费用描述分组的表中显示费用


while($row = mysqli_fetch_array($query))
{
//$sql3 ='select * from description where descid = '.$row['descid'].' ';
$query3 = mysqli_query($conn,$sql3);
$row2 = mysqli_fetch_array($query3);
$total =$total + $row['amount'];
echo ' <tr>
<td style="text-align:center">'.$row['amount'].'</td>
<td style="text-align:center">'.$row2['description'].'</td>
<td style="text-align:center">'.$row['info'].'</td>
<td style="text-align:center">'.$row['DATE'].'</td>
<td style="text-align:center">'.$total.'</td>';

?>
<td><a href="insert.php?delete=<?php echo $row['outid']; ?>"
class ="btn btn-danger">delete</a></td>
<?php
echo '
</tr>';

}
} 

这段代码显示了所有的数据从费用表但是如何编写PHP代码来。显示按费用描述分组的所有费用。

您必须生成另一个按描述分组的数组,或者只是查询另一个SQL语句,读取分组的行。既然您已经查询了所有的数据,我建议使用一个按描述分组的简单数组。

$grouped = [];
$data = mysqli_fetch_array($query);
foreach ($data as $row) {
if (!isset($grouped[$row['description'])) {
$grouped[$row['description]] = 0;
}
$grouped[$row['description'] += $row['amount'];
}
// process your templating here
foreach ($data as $row) {
...
}

Anayway……另一个解决方案可以是一个简单的SQL语句。

SELECT SUM(amount) AS sum FROM table WHERE description_id = :description_id

最新更新