php代码可动态显示产品报告

时间:2019-02-04 15:20:36

标签: php pdo

我正在将POS软件迁移到基于Web的版本,在我想动态显示Sales产品之前,一切都进行得很好。

产品列表

enter image description here

销售表

enter image description here

我使用implode插入我的记录,爆炸后效果很好。

这里的问题是我想显示所有基于产品的销售,即从销售表中爆炸product_id并使用每个ID来获取产品名称。

还根据产品ID爆炸数量并将所有数量加在一起,并爆炸真实价格并显示价格等等。

我得到的不是我想要的

enter image description here

这就是我想要的

enter image description here

 <table id="salestable" class="table table-bordered table-striped table-hover">
                    <thead>
                      <tr class="titlerow" role="row">
                      <th >Products</th>
                      <th >Sold</th>
                      <th >Cost</th>
                      <th >Income</th>
                      <th >Profit</th>  
                      </tr>
                    </thead>
                    <tbody id="get_product">
                 <?php
                 try{       
    $query = $con->prepare("Select  s.product_id, s.adjust_price, s.real_price, s.quantity,  s.sales_date from tbl_sales s where s.status ='Paid' and  s.store_id = '$store'");
    $query->execute();
    while($row = $query->fetch(PDO::FETCH_ASSOC)){
        ?>      
            <tr>
            <td ><?php foreach(explode("|", $row['product_id']) as  $pID){ get_product_by_id($con, $pID); } ?></td>
            <td ><?php foreach(explode("|", $row['quantity']) as  $qty){ echo $qty; } ?></td>
            <td ><?php foreach(explode("|", $row['real_price']) as  $cost){ echo $cost; } ?></td>
            <td ><?php foreach(explode("|", $row['adjust_price']) as  $income){ echo $income; } ?></td>
            <td ><?php echo '2'; ?></td>
            </tr><?php


                                }                                


    } catch (PDOException $e){
                $_SESSION['error'] = $e->getMessage();
                $log = date('Y-m-d H:m:s').' '.$_SERVER['REQUEST_URI'].' '.$e->getMessage(). "\r\n";
            file_put_contents('../errorlog.txt', $log, FILE_APPEND);
}
                    ?>   </tbody>
                    <tfoot>
                      <tr class="totalColumn">
                        <th >Products</th>
                      <th class="totalCol" >Sold</th>
                      <th class="totalCol" >Cost</th>
                      <th class="totalCol" >Income</th>
                      <th class="totalCol" >Profit</th>
                      </tr>
                      <tr class="footersearch">
<td colspan="8" ><input type="text" class="form-control" name="search_table" id="search_table" title="Type & hit enter to search the table" data-toggle="tooltip" placeholder="Type & hit enter to search the table" style="width:100%;"></td>
</tr>
                    </tfoot>
                  </table>

1 个答案:

答案 0 :(得分:0)

以防万一归一化您对@Cid的评论,以扩大其含义。

如果要将销售或发票链接到客户,则需要“客户”表和“发票”表。如果您不想跟上客户信息,只需使用发票表即可。将出售的商品链接到发票的一种方法是使用一个称为ProductInInvoice的关系,如下所示。该伪代码不是有效的SQL,但您会明白的。

Products (
  productId,
  name,
  description,
  price,
  ...
);

Invoice (
  invoiceId
);

ProductInInvoice (
  productId,
  invoiceId,
  quantitySold
);

在这里,ProductInInvoice表中的productId是Products表中的外键,而invoiceId是Invoice表中的外键。

如果您有一个带有customerId列的Customer表来存储客户信息,则可以将外键customerId添加到引用该Customer表的Invoice表中。然后,您可以查询,通过在SELECT语句中连接表,不仅可以找到在该交易中出售的每件商品的数量,而且还可以找到购买这些物品的人。