考虑了一下,还是把价格给加上去好了(因为他跟商品数量的处理应该是差不多麻烦)
新建立一个 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
看完这篇文章你会得到的成果图 此篇文章的范例程序码 github https://github.co...
本篇文章同步发表在 HKT 线上教室 部落格,线上影音教学课程已上架至 Udemy 和 Youtu...
自己写看看转场-0.0从空白开始 从res右键选transition 再从Transition去新增...
之前我们看过用 Python 计算 Gradient 必须要手动计算偏微分之後,才有办法算出 那如...
出现频率:极少数客户 (但是若有,该主机就会常常出现此讯息) 成因:目前未能完全确认原始成因,但是...