第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');
	}
}
?>

今天先这样,下次见。


<<:  Day 4:88. Merge Sorted Array

>>:  Day 03:观察资料夹

【没钱买ps,PyQt自己写】Day 29 - final project - 2 / 来搞一个自己的 photoshop 吧!後段程序细节篇 (结合 PyQt + OpenCV)

看完这篇文章你会得到的成果图 此篇文章的范例程序码 github https://github.co...

Day 6:建立口罩地图APP专案

本篇文章同步发表在 HKT 线上教室 部落格,线上影音教学课程已上架至 Udemy 和 Youtu...

第14天~

自己写看看转场-0.0从空白开始 从res右键选transition 再从Transition去新增...

Day-14 Pytorch 的 Gradient 计算

之前我们看过用 Python 计算 Gradient 必须要手动计算偏微分之後,才有办法算出 那如...

[FGL] Error: Invalid hello message

出现频率:极少数客户 (但是若有,该主机就会常常出现此讯息) 成因:目前未能完全确认原始成因,但是...