我在db中有两个表:item表(goods1)和order表(kB)。在kB中,每个订单项等于单个行,表示2个项目的顺序= 2个行,在相应的列中具有相同的帐单编号。 IU想要将订购的商品分组到每个帐单号码 我得到了以下内容:
<?
...
$sql = $conn->query("
SELECT
kB.BillNum AS B, goods1.*,
GROUP_CONCAT(goods1.ArtName) AS bestArts,
GROUP_CONCAT(goods1.ArtNrAttach) AS ArtNrAttachs,
GROUP_CONCAT(kB.Menge) AS Menges,
FROM
kB, goods1
WHERE kB.bestArt = goods1.id
AND kB.ordDate LIKE '%$datum_seek%'
GROUP BY kB.BillNum");
if(mysqli_error($conn)){ echo " ERROR";}
ELSE IF(!mysqli_error($conn)){
echo'<table colspan="6" style="border:1px solid black;">
<tr>
<th colspan="1">bill number</th>
<th colspan="1">item</th>
<th colspan="1">item nummer</th>
</tr>';
while($row = $sql->fetch_assoc()) {
$bestArts = split(",",$row["bestArts"]);
$ArtNrAttachs = split(",",$row["ArtNrAttachs"]);
$Menges = split(",",$row["Menges"]);
echo '<tr><td style="background-color:lightblue;">'. $row["B"].'</td>';
?>
<td><?php echo $bestArts[0]; array_shift($bestArts); ?></td>
<td><?php echo $ArtNrAttachs[0]; array_shift($ArtNrAttachs); ?></td>
<td><?php echo $Menges[0]; array_shift($Menges); ?></td>
</tr>
<tr>
<td></td>
<?php
foreach($bestArts as $bestArt):
echo '<td>' . $bestArt .'</td>';
endforeach;
foreach($ArtNrAttachs as $ArtNrAttach):
echo '<td>' . $ArtNrAttach .'</td>';
endforeach;
foreach($Menges as $Menge):
echo '<td>' . $Menge .'</td>';
endforeach;
...
这打印好了:
| B | ArtName | ArtNr | Menge |
| ArtName | ArtNr | Menge |
| B | ArtName | ArtNr | Menge |
| ArtName | ArtNr | Menge |
但如果我为每个'B'(1个订单的项目)有超过2行,那么它打印如下:
| B | ArtName | ArtNr | Menge |
| ArtName | ArtNr | Menge |
| B | ArtName | ArtNr | Menge |
| ArtName | ArtNr | Menge |
| ArtName | ArtName |ArtNr | ArtNr | Menge | Menge |
预期产出:
| B | ArtName | ArtNr | Menge |
| ArtName | ArtNr | Menge |
| B | ArtName | ArtNr | Menge |
| ArtName | ArtNr | Menge |
| ArtName | ArtNr | Menge |
我试过,但我找不到解决方法。有人可以帮忙吗?
答案 0 :(得分:1)
如果预期输出为:
| B | ArtName | ArtNr | Menge |
| ArtName | ArtNr | Menge |
| B | ArtName | ArtNr | Menge |
| ArtName | ArtNr | Menge |
| ArtName | ArtNr | Menge |
| ArtName | ArtNr | Menge |
您可以将代码更改为:(假设$bestArts
,$bestArts
,$ArtNrAttachs
具有相同的尺寸)
<?php for ($i = 0; $i < count($bestArts); $i++) { ?>
<td><?php echo $bestArts[$i];?></td>
<td><?php echo $ArtNrAttachs[$i];?></td>
<td><?php echo $Menges[$i];?></td>
<?php } ?>
删除foreach's。
提出最小的更改,但确定您需要重新考虑代码结构。