【问题标题】:not able to delete item from cart无法从购物车中删除商品
【发布时间】:2013-10-17 18:51:10
【问题描述】:

我又问了一次 这更具体。

     $cartOutput.='<form method="post" action="cart.php">
     <input type="submit"name="deletebtn'.$item_id.'" value="remove"/>
     <input type="hidden" name="index_to_remove" value="'.$i.'"</form>';

在这个 index_to_remove 来自表单中的隐藏输入类型...我创建了一个带有删除按钮的表单,并通过一个隐藏的输出字段我传递了我想从购物车中删除的项目的索引并实现了这个代码。但它不起作用.......

      <?php
       /////////////////////////////////////////////////////////
        // if user wants to remove an item from cart
         ////////////////////////////////////////////////////////
          if(isset($_POST['index_to_remove']) && $_POST['index_to_remove']=!"")
         {  
         //access the array and rum code to remove that array index
             $key_to_remove=$_POST['index_to_remove'];
          if(count($_SESSION['cart_array'])<=1)
          {
               unset($_SESSION['cart_array']);
               sort($_SESSION['cart_array']);
           }
   else
      {
               unset($_SESSION["cart_array"][$key_to_remove]);
               sort($_SESSION['cart_array']);
               echo count($_SESSION['cart_array']);
     }
 }

    ?>

【问题讨论】:

  • 你能在删除操作之前和之后print_r()$_SESSION['cart_array'] 吗?
  • 你为什么要sort$_SESSION['cart_array'],而你只有unset呢?
  • 不是unset 整个$_SESSION['cart_array'],只是其中的一个元素。尽管如此,关于需要sort() 的问题仍然存在。 (编辑:哎呀,我只看else 部分,我猜他也打算删除then 中的一个元素,只是错过了......)

标签: php arrays session


【解决方案1】:

你的 html 坏了

改变

<input type="hidden" name="index_to_remove" value="'.$i.'"</form>';

<input type="hidden" name="index_to_remove" value='$i'></form>';

【讨论】:

  • 我对此进行了排序,但仍然没有删除项目
  • 没有错误,但即使回显计数($_SESSION['cart_array']),商品仍保留在购物车中;
【解决方案2】:

问题出在这里:

if(isset($_POST['index_to_remove']) && $_POST['index_to_remove']=!"")

在第二部分你有 =!""

这评估为 $var 不等于 "" 并因此返回始终为真(并将 $_POST['index_to_remove'] 设置为真,然后在您的 if 中使用)。我相信您正在寻找 != 或 !== 这意味着不等于。

【讨论】:

    【解决方案3】:

    替换此行

    if(isset($_POST['index_to_remove']) && $_POST['index_to_remove']=!"")
    

    if(isset($_POST['index_to_remove']) && $_POST['index_to_remove']!="")
    

    因为它会将您的 index_to_remove 值更改为“1”,而不是帖子中的值。

    你的 html 标签也没有正确关闭。

    【讨论】:

    • 抱歉之前没问过,session_start() 是不是在这段代码上面被调用了?未设置之前和之后 $_session 的打印显示什么?
    • ya session_start 在上面
    • 尝试使用 session_destroy,只是为了检查它是否有效。
    猜你喜欢
    • 1970-01-01
    • 2015-07-05
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 2020-03-20
    • 2021-07-26
    • 2018-07-22
    相关资源
    最近更新 更多