iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
自我挑戰組

HTML、 PHP CRUD 自我學習系列 第 20

第20天 - 來試著做一個簡易購物系統(4)購物車卡關了,先確定能新增資料:(

  • 分享至 

  • xImage
  •  

昨天把購物車的資料表建好了(表 car)。

今天購物車製作的理想步驟應該是:
按下"加到購物車按鈕">> 把會員id、商品相關訊息 加到 表car >> 購物車做價格統計,然後列印出來。
上面動作會牽扯到商品數量,所以第18天的文章可以看一下。
https://ithelp.ithome.com.tw/articles/10266669

注意!!因為我的寫法,會異動到商品的資料表之php
要寫在"列印的程式碼"下面,否則會出錯 (第18天文章也有提到)

以下 VALUES('$st_id','$p_id','$p_name','$p_price','$buy_amount')";
裡面的變數也請參考 第18天的文章(裡面的列印程式碼)

<?php
/*按下"送出購買"*/
if(isset($_POST['buy_it_btn']))
{
	//減少相應商品數量
	$buy_amount = $_POST['buy_amount']; 
	$p_id =$_POST['P_ID'];

	//最終數量 = 庫存數量 - 欲購買數量
	$f_amount = $p_amount - $buy_amount;
	$st_id = $_SESSION['auth_user']['user_id']; 

	if($f_amount > 0)
	{
		$query2="UPDATE s_product
			 SET product_amount ='$f_amount'
			 WHERE product_id ='$p_id' ";
	}
	$query_run2 = mysqli_query($con,$query2);


	$queryA = "INSERT INTO car(staff_id, product_id, car_p_name, car_p_price, car_p_amount)
			   VALUES('$st_id','$p_id','$p_name','$p_price','$buy_amount')";
	$query_runA = mysqli_query($con,$queryA);


	if($query_run2 && $query_runA)
	{
		$_SESSION['status'] =" 購買成功!!!!!!!!!!";
		header('Location: Hello.php');
	}
	else
	{
		$_SESSION['status'] =" 剩餘數量不足,購買失敗~~";
		header('Location: Hello.php');
	}
}
?>

補充:php若不會出錯,盡量可以寫在最上面,因為這樣可以不用刷新頁面,就可以更新最新內容(沒記錯的話)。不過因為我這購物車寫法會跳轉頁面(必定刷新)所以寫下面也影響不大...吧:D

【突然想到的(預想一下未來規劃): 日後該如何把每筆購物車內容集中在一筆訂單呢??
我們可依據會員ID來抓屬於我們的購物車資料,再來是...
我想到的是,先新增"訂單的資料表" 按下"送出訂單"之後就會新增一個"訂單ID",然後再把每個購物車的資料表(car)追加 "訂單ID 欄位"來做區分。
若 表car中的 "訂單ID"是-1的話就視為"無效(已取消)訂單"。有掛上的話再把它GROUP BY起來,集中成一筆訂單!
(以上構想,我也不知道是不是對的,之後試了才知道:D)】

【那現在又有個問題:我該依據什麼來統計當前購物車的價格呢?
把 表car 追加的"訂單ID" <<若此欄位值是-2的話則視為"未生效訂單"再把它集中起來?】

今天先這樣(確定能新增表car的資料),下次見。


上一篇
第19天 - 來試著做一個簡易購物系統(3)建購物車的資料表、一點點SESSION
下一篇
第21天 - 來試著做一個簡易購物系統(5),統計購物車價格
系列文
HTML、 PHP CRUD 自我學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言