【发布时间】:2016-02-21 04:26:47
【问题描述】:
我有一个表格,其中显示了项目名称列表、其类别、每个类别中的项目数量以及所有项目的项目总数量。预期结果应如下所示:
Item Name | Item Class | Item Quantity | Total Quantity
| 1 | 4 |
A | 2 | 5 | 11
| 3 | 2 |
-------------------------------------------------------
| 1 | 6 |
B | 2 | 3 | 10
| 3 | 1 |
但我得到的是这样的:
Item Name | Item Class | Item Quantity | Total Quantity
| 1 | 4 |
A | 2 | 5 |
| 3 | 2 |
----------------------------------------
| 1 | 6 |
B | 2 | 3 |
| 3 | 1 | 11 | 10
如何在与其键(项目名称)和行跨度相同的行中垂直显示总量。我使用数组来显示结果,因为有隐藏的计算。由于计算,我的代码有点复杂,但让我们忽略计算部分,因为它工作正常。如果您需要了解我的计算,您可以从我的个人资料中查看我之前的问题。我现在需要解决的是如何正确显示总量。
这是我的代码:
<table>
<tr>
<td>Item Name</td>
<td>Item Class</td>
<td>Item Quantity</td>
<td>Total Quantity</td>
</tr>
<?php
$result=mysql_query("SELECT * FROM tblitem");
$classqty=array();
while($row = mysql_fetch_array($result)){
$item=$row['itemName'];
$class=$row['itemClassName'];
if(!isset($classqty[$item][$class]))
{
$classqty[$item][$class] = 0;
}
if(is_null($row['itemLocCheckOut'])){
$classqty[$item][$class] += $row['itemQty'];
}
else{
$classqty[$item][$class] -= $row['itemQty'];
}
}
$sum=array();
foreach($classqty as $k1=>$v1){
foreach($v1 as $k2=>$v2){
if(!isset($sum[$k1])){
$sum[$k1] = $v2;
}
else
{
$sum[$k1] += $v2;
}
?>
<tr>
<td><?php echo $k1;?></td>
<td><?php echo $k2;?></td>
<td><?php echo $v2;?></td>
<?php
} /*close second foreach*/
} /*close first foreach*/
foreach($sum as $name=>$total){
?>
<td><?php echo $total;?></td>
<?php
} /*close foreach for $sum*/
?>
</tr>
</table>
P/S:请不要建议我使用SELECT SUM,因为我的计算没有问题,我不能简单地使用SUM,因为我的代码涉及多个系列的计算,并且总量是基于结果的从计算。我的问题只是如何在垂直位置正确显示总量结果。
【问题讨论】:
-
你的数量是根据商品名称来的吗?
-
@AjayMakwana 项目数量基于项目类别和项目名称。但是总数量是基于物品名称的,是指所有物品数量的总和,不考虑它们的类别。
-
<tr>标签在 for 循环内打开,在 for 循环外关闭。您需要使 HTML 正确。
标签: php mysql arrays html-table