问题:
1)在订单历史记录中只显示3行id_penjualan,应该是4行id_penjualan
2)jumlahtotal具有相同的值,应根据每笔交易的产品数量之和而有所不同。
表:
表: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'] ;?>&nbsp;<?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/

10-10 14:35