【发布时间】:2015-07-13 21:17:53
【问题描述】:
我需要有关此代码的帮助。如果请求的库存项目(数据库)小于他的请求(数量),我想动态禁止用户添加到购物车。将不胜感激,如果我能知道我错在哪里并且可能有人为我纠正它。
HTML 表单
<form action="cart.php?adm_id=<?php echo urlencode($patient["adm_id"]);?>" method="post" name="CartForm" target="_self">
<p>Product Name:<select name="prod_name" size="1" id="prod_name">
<option value="Select">Select</option>
<?php
while ($line = mysqli_fetch_array($query, MYSQL_ASSOC)) {
?>
<option value="<?php echo $line['prod_name'];?>"> <?php echo $line['prod_name'];?> </option>
<?php } ?>
</select></p>
<p>Quantity:<input type="number" name="qty" id="qty" size="30" required="required"/></p>
<input name="submit" type="submit" value="Add to Cart" id="btn"/> | <input name="reset" type="reset" value="Cancel" />
Ajax 代码:
<script src="javascript/jquery-2.0.3.js">
</script>
<script type="text/javascript">
$(document).ready(function(ex) {
//$('#stock').load('pharmacy_summary.php');
$('#qty').change(function(){
var prod_name = $('#prod_name').val();
var qty= $('#qty').val();
$.ajax({
url: 'confirmStock.php',
data:{prod_name: prod_name, qty: qty},
success: function(e){
if(e == 'true'){
/*if the quantity is greater than the stock*/
alert('stock Item is lower to your request, reduce it');
$('#btn').prop('disabled', true);
}else{
$('#btn').prop('disabled', false);
} }
})});
});
</script>
PHP/MYSQLI 代码:(ConfirmStock.php)
<?php require_once("/includes/db_connection.php");?>
<?php require_once("/includes/functions.php");?>
<?php
if(isset($_GET['prod_name'])){
$getProd = $_GET['prod_name'];
$getQty = $_GET['units'];
global $connection;
$val = "SELECT * FROM pharmacy_stock_tab WHERE prod_name='".$getProd."'";
$conf = mysqli_query($connection,$val);
$fetchVal = mysqli_fetch_array($conf);
$stock = $fetchVal['units'];
if($getQty>$stock){
return $stock;
}else{
return $stock;
}
}
?>
【问题讨论】:
-
一方面
MYSQL_ASSOC必须是MYSQLI_ASSOC- 你在混合API。 -
那么在您的
cart.php?adm_id中,您正在执行 GET 方法,但除了混合 GET 和 POST 之外,没有任何匹配的方法。if(isset($_GET['prod_name'])){应该是if(isset($_GET['adm_id'])){ -
你的代码有什么问题?
-
@Fred,谢谢,cart.php?adm_id 已从顶部发送。我只是没有将它包括在问题中。 $患者= find_patients_by_id($_GET["adm_id"]);但是,这不是问题,因为它在这方面工作得很好。此外,它应该读取 isset prod_name 而不是 adm_id。原因是这样的:当用户选择产品名称并继续选择数量时,我希望能够将该数量与数据库中该产品名称的总数量进行比较。如果选择的数量大于 DB(total)qty,则触发警报并禁用 btn 添加到购物车,否则成功添加。期间
-
好的。好吧,有人在下面为您提供了答案; 试一试 ;-)