2015-04-14 73 views
0

簡單的購物車我想箱子一個非常簡單的shopping cart 我使用的是sessionarray給項目添加到array並保存arraysession,並顯示在此session物品妥善像 項目1名稱 - 價格 項目2名稱 - 價格 然後將總數付給我的付款方式。創建一個使用PHP

這裏是我正在使用的代碼。

print_r($_SESSION['cart']); 


if (isset($_POST['buy'])) { 
    //header("Location:?pid=18&pl=" . $pl); 
    $getData = $db->prepare('SELECT * FROM plans WHERE id=?'); 
    $getData->bind_param('i', $pl); 
    if ($getData->execute()) { 
     $res = $getData->get_result(); 
     if ($pn = $res->fetch_object()) { 

      $item['name'] = $pn->plan_name; 
      $item['price'] = $pn->price_dollar; 
      if (isset($_SESSION['cart'])) { 
       $_SESSION['cart'] = $item; 
      } 
     } 
    } 
} 

問題 (!) Notice: Undefined index: cart

編輯

這是我結束與

if (isset($_SESSION['cart'])) { 
    foreach ($_SESSION['cart'] as $c) { 
     echo $c['name'] . '<br />'; 
     echo $c['price'] . '<br />'; 
     echo '<a href="?pid=17&rc=' . $c['code'] . '">Remove item</a><br />'; 
    } 
} 


if (isset($_POST['buy'])) { 
    //header("Location:?pid=18&pl=" . $pl); 
    if (isset($_POST['buy'])) { 
     $getData = $db->prepare('SELECT * FROM plans WHERE id=?'); 
     $getData->bind_param('i', $pl); 
     if ($getData->execute()) { 
      $res = $getData->get_result(); 
      if (($pn = $res->fetch_object()) !== null) { 
       $proCode = range(1, 100); 
       shuffle($proCode); 

       $item['name'] = $pn->plan_name; 
       $item['price'] = $pn->price_dollar; 
       $item['code'] = $proCode; 
       $_SESSION['cart'][] = $item; 
      } 
     } 
    } 
} 

if (isset($_GET['rc']) && isset($_SESSION['cart'])) { 
    $rem = $_GET['rc']; 
    if (($key = array_search($rem, $_SESSION['cart'])) !== false) { 
     unset($_SESSION['cart'][$key]); 
    } 
} 

,但仍是不刪除工作

+0

是否有在session_start();在你的代碼中的某個地方? – Netra

+0

是的,在標題中有一個我的意思是有'header.php'這個網站標題的內容和那裏是'session_start()'那裏 –

+0

print_r($ _ SESSION ['cart'])的輸出是什麼? – ply

回答

0

正如我所看到的,您試圖打印未設置的變量。此外,使用此代碼:

if (isset($_SESSION['cart'])) { 
    $_SESSION['cart'] = $item; 
} 

您將永遠無法將商品添加到購物車。我的方式做到這一點是:

if (isset($_POST['buy'])) { 
    $getData = $db->prepare('SELECT * FROM plans WHERE id=?'); 
    $getData->bind_param('i', $pl); 
    if ($getData->execute()) { 
     $res = $getData->get_result(); 
     if ($pn = $res->fetch_object()) { 

      $item['name'] = $pn->plan_name; 
      $item['price'] = $pn->price_dollar; 

      $_SESSION['cart'][] = $item; 
     } 
    } 
} 

這樣一來,即使cart鍵不,它無論如何都會被設置。同時,它將允許您在購物車中放置多件商品。

編輯:接下來要做的事情,如果你想展示你的項目如下:

foreach ($_SESSION['cart'] as $k => $item) { 
    echo "item $item->id $item->plan_name -- $item->price_dollar"; 
} 
+0

首先讓我感謝你的這個好的答案,我需要了解的另一件事我該如何使用格式化的方式顯示會話中的項目,如項目1的名稱 - 價格 –

+0

無法從會話中獲取此值而不依賴於在我的數據庫'$ item-> plan_name'和'$ item-> price_dollar' –

+0

是的,你可以通過$ _SESSION ['cart'] [] = $ item替換$ _SESSION ['cart'] [] [ 'my_custom_field'] = $ item->無論如何,但似乎有點棘手。 –