如何在php中创建在线商店的订单历史记录?

时间:2015-06-30 17:05:35

标签: php mysql pdo

问题

1)订单历史记录中只显示了3 id_penjualan行,应为4 id_penjualan行。

2)jumlahtotal具有相同的值,根据每笔交易的产品数量总和,彼此应该不同。

表格 tb_penjualantb_penjualan

表格tb_detail_penjualantb_detail_penjualan

输出order history

代码

<?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>

1 个答案:

答案 0 :(得分:0)

您的代码中有2个查询:

  1. $query已使用$stmt
  2. 执行
  3. $query2已使用$stmt2执行,您在$row2中获取第一行。
  4. 然后你有一个循环,你从$stmt通过变量$row获取所有行。因此,$row每次都包含第一个查询的下一行的值。

    但是在循环中你也输出来自$row2的信息,它不会改变(它仍然是循环之前获取的第一行),所以每次打印相同的输出时。