iT邦幫忙

2021 iThome 鐵人賽

DAY 18
0
自我挑戰組

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

第18天 - 來試著做一個簡易購物系統(2)_購買後,減少商品數量

考慮了一下,還是把價格給加上去好了(因為他跟商品數量的處理應該是差不多麻煩)
https://ithelp.ithome.com.tw/upload/images/20210918/201413556Qv1pS6gYD.png

新建立一個 s_buy.php
然後把昨天"購買按鈕"那邊修改成這樣 (客戶端都是沿用 Hello.php)

<td>
    <a href="s_buy.php?BUT_IT=<?php echo $row['product_id'];?>" 
       class="badge badge-info">
       購買
    </a>
</td>

然後是 s_buy.php 的東西【純列印(不含處理資料表),我找到一個很讚的JS(不是我寫的),用來限定商品數量必須為正整數】
【記得用 FORM標籤包起來,等等才能錯處理資料表的內容】
下面$p_name = $row['product_name'];
$p_price = $row['product_price'];
$p_amount = $row['product_amount'];
都是之後購物車會用到的(沒意外的話),所以先這樣寫。

<body>
<form method="POST">
<div class="container">
<?php
	$P_ID = $_GET['BUT_IT'];
	$query = "SELECT * FROM s_product WHERE product_id='$P_ID' ";
	$query_run = mysqli_query($con,$query);
?>
<?php
	if(mysqli_num_rows($query_run) > 0)
	{
		foreach($query_run as $row)
		{
            $p_name = $row['product_name'];
			$p_price = $row['product_price'];
			$p_amount = $row['product_amount'];
			?>
				<input type="hidden" name="P_ID" value="<?php echo $row['product_id'];?>">
				<label>商品:</label><?php echo "$p_name";?><br>
				<label>價格:</label><?php echo "$p_price";?><br>
				<label>剩餘數量:</label><?php echo "$p_amount";?><br>

				<label>欲購買數量:</label>
				<input type="text" 
					   placeholder="輸入商品數量"
					   value="1" 
					   name="buy_amount"
					   onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}" onafterpaste="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"/>
				<button name="buy_it_btn">加到購物車</button><br>

				<label>商品明細:</label><?php echo $row['product_detail'];?>
			
<?php
		}
	}
	else
	{
		echo "沒有該商品 (照理來講不應該會觸發這一行)";
	}
?>
	
	
					
</div>
</form>
</body>

然後是剩餘數量減少的php【這次的php 要寫在列印的程式碼下面,不然會出錯】
以及若"購買數量"大於"剩餘數量" 就會購買失敗(以下是我想到最陽春的解決辦法,我覺得一定有瑕疵,但還沒想到更好的,如果有之後再補上)

<?php
/*按下"送出購買"*/
if(isset($_POST['buy_it_btn']))
{
	$buy_amount = $_POST['buy_amount']; 
	$p_id =$_POST['P_ID'];
    
    //最終數量 = 剩餘數量 - 購買數量
	$f_amount = $p_amount - $buy_amount;

    //若 最終數量 > 0 ,才會更新資料庫數據。
	if($f_amount > 0)
	{
		$query2="UPDATE s_product
			 SET product_amount ='$f_amount'
			 WHERE product_id ='$p_id' ";
	}
    
    //若 資料庫數據成功更新了,則購買成功;反之購買失敗。
	$query_run2 = mysqli_query($con,$query2);
	if($query_run2)
	{
		$_SESSION['status'] =" 購買成功!!!!!!!!!!";
		header('Location: Hello.php');
	}
	else
	{
		$_SESSION['status'] =" 剩餘數量不足,購買失敗~~";
		header('Location: Hello.php');
	}
}
?>

今天先這樣,下次見。


上一篇
第17天 - 來試著做一個簡易購物系統(1)、補充昨天的登入程式碼
下一篇
第19天 - 來試著做一個簡易購物系統(3)建購物車的資料表、一點點SESSION
系列文
HTML、 PHP CRUD 自我學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言