尝试更改删除按钮的工作方式

时间:2017-02-25 19:26:06

标签: php

以下代码段是从购物车中删除该项目。当用户在文本字段中输入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>

2 个答案:

答案 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以了解您必须删除的产品。

我们走了:

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" value="<?php echo $row['id']; ?>">Remove</button>

请注意,我们添加了$row['id']作为提交按钮值。

PHP

现在我们要说我们要从购物车中删除与提交值具有相同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;
                }
            }
        }
    }
}

希望它有所帮助。