第21天 - 来试着做一个简易购物系统(5),统计购物车价格

延续昨天的构想,今天来试试看能否成功。

昨天的构想好像有点错误,因为购物车只会有1台,且纪录是暂时的,所以目前先增加栏位。

那这次新的构想就是:要新建一个新资料表,如果购物车确定购买,则清空该帐号购物车的所有内容,并在新建立的资料表新增"处理(加总)过"的内容。
那...要如何区分不同订单? <<这问题之前好像有点想太多,原本以为要把购物车的所有内容都原封不动搬过去,可是这样资料表的栏位会非常难设计(对我来说)。不如直接把购物车的内容"处理(加总)过"再新增到新资料表,再加时间戳来做区分~!
这样应该会轻松很多。

程序码如下(这次比较重要的是 sql 的语法)
(注意一下,里面有两个会员的购物车,但只列印、计算该帐号的内容)
https://ithelp.ithome.com.tw/upload/images/20210921/201413552JWNIdtfnO.png

<table class="table table-sm table-bordered"style="text-align:center;">
<?php 
    //删除购物车内容
    if (isset($_POST['delete_car_btn'])) 
    {
        $id_c = $_POST['delete_car_id'];
        $queryCC = "DELETE FROM car WHERE car_id='$id_c' ";
        $query_runCC = mysqli_query($con,$queryCC);
    }
?>
    <thead style="text-align:center;">
        <tr style="text-align:center;">
            <th>商品</th>
            <th>价格</th>
            <th>数量</th>
            <th>删除</th>
        </tr>
    </thead>
    <tbody>
        <?php 
            $stc_id = $_SESSION['auth_user']['user_id']; 
            $queryC = "SELECT * FROM car  WHERE staff_id = '$stc_id' "; 
            $query_runC = mysqli_query($con,$queryC);

            if(mysqli_num_rows($query_runC) > 0)
            {
                foreach($query_runC as $rowC)
                {
                    //下面两个变数,原本想用此来做统计
                    //但後来发现,直接用SQL就好...多此一举
                    $c_price = $rowC['car_p_price'];
                    $c_amount = $rowC['car_p_amount'];
        ?>
                    <tr>
                        <td><?php echo $rowC['car_p_name']; ?></td> 
                        <td>$<?php echo "$c_price"; ?></td> 
                        <td><?php echo "$c_amount"; ?></td>
                        <td>
                            <form method="post" action="" > 
                                <!-- 下面有个 input type="hidden" 是让待会的PHP 知道要删除哪一笔资料 -->
                                <input type="hidden" name="delete_car_id" value="<?php echo $rowC['car_id']; ?>">
                                <button  name="delete_car_btn" 
                                            class="badge badge-danger">
                                    删除
                                </button>
                          </form>
                        </td>
                    </tr>
        <?php
              }
            }
        ?>
    </tbody>
        <?php 
            $queryT = "SELECT *, sum(car_p_price * car_p_amount) AS p_total 
                       FROM car
                       WHERE staff_id = '$stc_id' "; 
            $query_runT = mysqli_query($con,$queryT);

            if(mysqli_num_rows($query_runT) > 0)
            {
                foreach($query_runT as $rowT)
                {
        ?>
                <th>总计: $<?php echo $rowT['p_total']; ?></th>		
        <?php
                }
            }
        ?>
</table>

https://ithelp.ithome.com.tw/upload/images/20210921/20141355jgqpxHGgLk.png

今天先这样,下次见。


<<:  [Day 7] Reactive Programming - Reactor(FLUX & MONO) Part 1

>>:  【Day10】[资料结构]-杂凑表Hash Table-实作

DAY11: Node基础总整理

前几篇的互相比较来比较去的,是不是都有点乱了思绪,今天来做个小复习,从DAY5: node 的内部机...

二十九日目:JavaScript XMLHttpRequest 弐ノ章

こんばんわー(U 'ᴗ' U)⑅ SONYKO 打油。 连续一周睡眠 < 5小时了,我是谁我在...

Day22-Go net/http

前言 今天要来介绍 Go 语言里的网路操作,这边会以介绍 net/http 这个套件为主,并且介绍什...

Basic NetSuite Customization Glossary

客制化, Customization 在 NetSuite 内提到 客制化 通常表示的是, 流程变更...

Day 26 Wireless Attacks - 无线攻击 (aircrack-ng)

前言 终於进入新的篇章06-Wireless Attacks,但由於先前的Kali虚拟机环境无法进行...