Php 如果数量降至0,如何停止更新按钮?

Php 如果数量降至0,如何停止更新按钮?,php,javascript,sql,Php,Javascript,Sql,在购物车页面中,用户可以更新项目的数量(添加时默认为1),因此,如果新数量将使当前数量降至0或以下,如何阻止用户更新数量或停止更新过程 代码如下: function showCart() { global $db; $cart = $_SESSION['cart']; if ($cart) { $items = explode(',', $cart); $contents = array(); foreach ($items as $item) { $co

在购物车页面中,用户可以更新项目的数量(添加时默认为1),因此,如果新数量将使当前数量降至0或以下,如何阻止用户更新数量或停止更新过程

代码如下:

function showCart() {
global $db;
$cart = $_SESSION['cart'];
if ($cart) {
    $items = explode(',', $cart);
    $contents = array();
    foreach ($items as $item) {
        $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
    }
    $output[] = '<form action="cart.php?action=update" method="post" id="cart">';

    $output[] = '<table border = "1" class ="table">';
    $output[] = '<tr height = "40">';
    $output[] = '<td width="168" align="center">&nbsp</td>';
    $output[] = '<td width="168" align="center">Title</td>';
    $output[] = '<td width="168" align="center">Author</td>';
    $output[] = '<td width="168" align="center">Price</td>';
    $output[] = '<td width="168" align="center">Quantity</td>';
    $output[] = '<td width="168" align="center">Total Amount</td>';
    $output[] = '<tr >';
    foreach ($contents as $id => $qty) {
        $sql = 'SELECT * FROM books WHERE id = ' . $id;
        $result = $db->query($sql);
        $row = $result->fetch();
        extract($row);
        $output[] = '<tr height ="40" >';
        $output[] = '<td width ="140" align="center"><a href="cart.php?action=delete&id=' . $id . '" class="r"><img alt=""  src="image/x.png" width = "30px" height="30px"></a></td>';
        $output[] = '<td width ="140" align="center">' . $name . '</td>';
        $output[] = '<td width ="140" align="center">' . $author . '</td>';
        $output[] = '<td width ="140" align="center">SGD' . $price . '</td>';
        $output[] = '<td width ="140" align="center"><input type="text" name="qty' . $id . '" value="' . $qty . '" size="3" maxlength="3" /></td>';
        $output[] = '<td width ="140" align="center" >SGD' . ($price * $qty) . '</td>';
        $total += $price * $qty;
        $output[] = '</tr>';
    }
    $output[] = '<tr>';
    $output[] = '<td>';
    $output[] = '<center>';
    $output[] = '<div class = "update_button"><button type="submit" >Update cart</button></div>';
    $output[] = '</center>';
    $output[] = '</td>';        
    $output[] = '<td colspan ="5" align="right">';
    $output[] = '<p>Grand total: <strong>SGD:' . $total . '</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>';
    $output[] = '</td>';
    $output[] = '</tr>';
    $output[] = '</table>';


    $output[] = '</form>';
    $output[] = '<br>';
} else {
    $output[] = '<center>';
    $output[] = '<br><h3>You shopping cart is empty.</h3><br>';
    $output[] = '</center>';
}
return join('', $output);
函数showCart(){
全球$db;
$cart=$\会话['cart'];
如果($cart){
$items=分解(“,”,$cart);
$contents=array();
foreach($items作为$item){
$contents[$item]=(isset($contents[$item])?$contents[$item]+1:1;
}
$output[]='';
$output[]='';
$output[]='';
$output[]=';
$output[]=“Title”;
$output[]=“作者”;
$output[]=“Price”;
$output[]=“数量”;
$output[]=“总额”;
$output[]='';
foreach($id=>$qty形式的内容){
$sql='从id='的书籍中选择*。$id;
$result=$db->query($sql);
$row=$result->fetch();
摘录(行);
$output[]='';
$output[]='';
$output[]='.$name';
$output[]='.$author';
$output[]=“新加坡元”。$price.”;
$output[]='';
$output[]=“新加坡元”。($price*$qty)。”;
$total+=$price*$qty;
$output[]='';
}
$output[]='';
$output[]='';
$output[]='';
$output[]=“更新购物车”;
$output[]='';
$output[]='';
$output[]='';
$output[]='总计:新加坡元:'.$total'.

'; $output[]=''; $output[]=''; $output[]=''; $output[]=''; $output[]='
'; }否则{ $output[]=''; $output[]='
您的购物车是空的。
'; $output[]=''; } 返回联接(“”,$output);

}

当有人购买时,我认为您正在更新表格并将数量减少1

当db表格中的数量达到0时,不要按下购买按钮


或者当数量为0时不从表中提取,或者在模型中随时维护可用项目的总数(模型应具有任何项目的当前状态)。
每当用户尝试向购物车添加商品时,请检查用户尝试添加的商品数量是否超过可用商品数量,然后向用户发出警报,告知这些商品不可用。

您是所示代码的作者吗?我假设您正在尝试修改其他人的代码,因此我将更透彻地解释:

您显示的代码不会更新任何内容。显示的PHP代码从$\u会话参数中获取购物车内容,并将其插入到$contents数组中

$cart = $_SESSION['cart'];
$items = explode(',', $cart);
$contents = array();
foreach ($items as $item) {
    $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
}
$contents现在是一个数组

之后,对$contents中的每个产品进行SQL查询,以查找产品详细信息,例如名称、作者等

$sql = 'SELECT * FROM books WHERE id = ' . $id;
$result = $db->query($sql);
$row = $result->fetch();
extract($row);
然后生成一个HTML表,其中包含每个产品和一个用于更改产品数量的字段

$output变量包含HTML表,但从未输出HTML表

我假设您只向我们展示了来自更大系统的部分代码。为了回答您的问题,您应该向我们展示处理POST请求和更新数据的PHP代码

编辑:从代码中可以看到

'<form action="cart.php?action=update" method="post" id="cart">';
”;

单击“更新”按钮时,POST数据将发送到文件cart.php?action=update。因此,您应该向我们展示更多来自cart.php的代码。

将每行HTML放入一个数组中,然后对其进行内爆的价值是什么?内联字符串串联更适合此用途。还有,为什么不在会话中为您的购物车使用多维数组,而不是在读取时必须分解的CSV列表。不,我不是所示代码的作者。此代码由我编辑一次。然而,我在想,是否可以从数据库中获取$quantity并插入一个if语句来显示警报?问题是,这段代码只定义了。当您单击“更新”时,数据将发送到页面“cart.php?action=update”。你应该从cart.php中粘贴一些代码(编辑你自己的帖子,不要创建答案),我已经添加了处理部分。我相信我没看到。在您的帖子中,我只看到函数showCart()。但当用户单击“更新购物车”时,POST数据将发送到page Cart.php。您应该显示cart.php中的更多代码。您是否熟悉GET和POST请求及其工作方式?如果没有,这里是一个好的起点: