0
我在DB兩個表:項目表(GOODS1)和訂單表(KB)。在kB中,每個訂單項等於單行,這意味着在適當的列中具有相同賬單號的2個項目的順序= 2行。 IU希望將所點項目,以每個單號 我有以下幾點:PHP的MySQL的foreach回聲錯誤
<?
...
$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 |
,但如果我有超過2線每個「B」( 1次項),那麼它打印這樣的:
| 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 |
我試過了,但是我找不到解決方案。有人可以幫忙嗎?
預期產量是多少? – Berriel
你在哪裏打印
回答
如果預期的輸出結果是:
你可以更改您的代碼:(假設
$bestArts
,$bestArts
,$ArtNrAttachs
具有相同的尺寸),並刪除在foreach的。
提出最小的改變,但是確定你需要重新思考你的代碼結構。
來源
2015-10-17 20:17:46 Berriel
@ Berriel你的建議是不打印每個'B'的第一行。如果有2條線,然後它打印1,如果有3個是打印2 ..... – ceyrslan
@ceyrslan SRY,'array_shift'還在那裏,嘗試更新的版本 – Berriel
仍然沒有變化,仍然2,而不是三個1而不是2只現在我每次收到最後顯示的線**注意:未定義的偏移:1 ** – ceyrslan
相關問題