2013-10-04 46 views
-3

在此代碼刪除案例中執行的時間超過會話獲取負值。哪些類型的更改發生在代碼中,以獲得僅獲得正值的會話。如何停止會話轉爲負值?

<?php 
    session_start(); 
    $d1=$_POST['d1']; 
    $action=$_POST['str1']; 
    $product_id = $_POST['productid']; 
    switch($action) 
    { 
    case "Add": 
     $_SESSION['cart'][$product_id] = $d1 + (isset($_SESSION['cart'][$product_id]) ?$_SESSION['cart'][$product_id] : 0); 
    break; 
     case "Remove": 
    $_SESSION['cart'][$product_id]=(isset($_SESSION['cart'][$product_id]) ? $_SESSION['cart'][$product_id] : 0)- $d1; 
      if($_SESSION['cart'][$product_id] == 0) 
      unset($_SESSION['cart'][$product_id]); 
      break; 
    } 
    ?> 
+0

THX弗雷德-II-並請幫我在主邏輯 –

+0

你那裏有'+號,我不確定這是否有效。嘗試使用'&&'代替。或者是用於計算? –

+0

+ sign working .. and all code working .. when remove case more time than session get negative value ...這個主要概念 –

回答

0

使用<=代替==以避免負值

if($_SESSION['cart'][$product_id] <= 0) 

而且你從「添加」的情況下缺少break;聲明

0

如果是「刪除」:部分。

你先算的項目清單,並放置的if else檢查,如果計數> 0,則執行刪除操作其他

跳過刪除。