以下代码段是从购物车中删除该项目。当用户在文本字段中输入0然后单击更新按钮(提交)时,它将删除该项。我的请求是如何更改按钮将删除项目的代码,而不确保用户在文本字段中输入0。我是PHP的新手。我希望你能帮助我。谢谢。
if(isset($_POST['submit'])){
if(!empty($_SESSION['cart'])){
foreach($_POST['quantity'] as $key => $val){
if($val==0){
unset($_SESSION['cart'][$key]);
}else{
$_SESSION['cart'][$key]['quantity']=$val;
}
}
}
}
html代码:
<td><input type="text" name="quantity[<?php echo $row['id']; ?>]"
size="6" value="<?php echo $_SESSION['cart'][$row['id']]['quantity'];
?>"> </td>
<button type="submit" name="submit">Update Cart</button>
添加项目流程
<tr>
<td><?php echo $row['name']; ?></td>
<td><?php echo $row['description']; ?></td>
<td><?php echo "$" . $row['price']; ?></td>
<td><a href="index.php?page=product&action=add&id=<?php echo $row['id'];
?>">Add to Cart</a></td>
</tr>
答案 0 :(得分:2)
我想您要删除数量字段中没有有效正数的所有项目。
为此,请使用intval
将输入的字符串显式转换为整数。当字符串不表示有效整数时,该值为0。然后检查结果是否为正数。
foreach($_POST['quantity'] as $key => $val)
{
$integervalue = intval($val);
if($integervalue <=0)
{
unset($_SESSION['cart'][$key]);
}
else
{
$_SESSION['cart'][$key]['quantity']=$integervalue;
}
}
答案 1 :(得分:1)
我邀请您有一个产品表,您可以在其中设置每个产品的数量,并在每行的右侧添加一个“更新购物车”按钮。
当您按下该按钮时,您想从该行中删除该产品,不是吗?因此,即使按钮在同一时间更新购物车数量,也必须将其命名为“删除”或类似按钮。用户会更清楚。
之后,要在按下删除按钮时删除产品,您需要获取该产品的ID以了解您必须删除的产品。
我们走了:
<td>
<input type="text" name="quantity[<?php echo $row['id']; ?>]" size="6" value="<?php echo $_SESSION['cart'][$row['id']]['quantity'];?>">
</td>
<button type="submit" name="submit" value="<?php echo $row['id']; ?>">Remove</button>
请注意,我们添加了$row['id']
作为提交按钮值。
现在我们要说我们要从购物车中删除与提交值具有相同id
的商品的商品:
if (isset($_POST['submit'])) {
if (!empty($_SESSION['cart'])) {
foreach ($_POST['quantity'] as $key => $val) {
if ($key == $_POST['submit']) { // Here we check if ID is the same
unset($_SESSION['cart'][$key]);
} else {
$integervalue = intval($val);
if ($integervalue <=0) { // Then we use the NineBerry integer check. So if item quantity is 0 or is invalid, we remove that item from the cart
unset($_SESSION['cart'][$key]);
} else { // we update other products quantities
$_SESSION['cart'][$key]['quantity']=$integervalue;
}
}
}
}
}
希望它有所帮助。