问题:
1)在订单历史记录中只显示3行id_penjualan
,应该是4行id_penjualan
。
2)jumlah
和total
具有相同的值,应根据每笔交易的产品数量之和而有所不同。
表:
表:tb_penjualan
:
输出:
代码:
<?php
$id_pelanggan=$_SESSION['user_session'];
$query="SELECT tb_penjualan.*, tb_pelanggan.nama_dpn, tb_pelanggan.nama_blk
FROM tb_penjualan LEFT JOIN tb_pelanggan
ON tb_penjualan.id_pelanggan=tb_pelanggan.id_pelanggan
WHERE tb_penjualan.id_pelanggan=:id_pelanggan
AND tb_penjualan.checkout='yes' ORDER BY id_penjualan";
$stmt=$con->prepare($query);
$stmt->execute(array(":id_pelanggan"=>$id_pelanggan));
$row=$stmt->fetch(PDO::FETCH_ASSOC);
$id_penjualan=$row['id_penjualan'];
if($stmt->rowCount()>0)
{
$query2="SELECT SUM(subtotal) AS total, SUM(jumlah) as total_jml
FROM tb_detail_penjualan
WHERE id_penjualan=:id_penjualan";
$stmt2=$con->prepare($query2);
$stmt2->execute(array(":id_penjualan"=>$id_penjualan));
$stmt2->execute();
$row2=$stmt2->fetch(PDO::FETCH_ASSOC);
$no=1;
while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{?>
<tr>
<td></td>
<td><?php echo $no++;?></td>
<td> <?php echo $row['id_penjualan'] ;?></td>
<td><?php echo $row['nama_dpn'] ;?> <?php echo $row['nama_blk'] ;?> </td>
<td><?php echo date('d F y', strtotime($row['tanggal_blj'])); ?></td>
<td><?php echo $row2['total_jml']; ?></td>
<td> <?php $harga = $row2['total'] ?> <?php echo "Rp. " .number_format($harga, 0, ',', '.');?></td>
<td>Rp. </td>
<td></td>
</tr>
<?php
}
} else { ?>
<p>Order history empty</p>
<?php }?>
</tbody>
最佳答案
代码中有两个查询:$query
用$stmt
执行$query2
与$stmt2
一起执行,并获取$row2
中的第一行。
然后有一个循环,在这个循环中,您通过变量$stmt
从$row
获取所有行。所以$row
包含第一个查询的下一行中的每个时间值。
但是在循环中,您还可以从$row2
输出信息,这不会改变(它仍然是循环之前获取的第一行),因此每次它都会打印相同的输出。
关于php - 如何在php中创建在线商店的订单历史记录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31144230/