2013-03-16 4 views
2

Когда товар добавлен в корзину, должен отображаться идентификатор товара и количество этого элемента. В этом случае из сеанса анализируется только количество. Идентификатор элемента не отображается. Также, когда добавляется другой предмет, тележка должна отображать второй элемент с отдельным количеством.Проблема с сеансом/массивом, Корзина

<?php 
session_start(); 


?> 
<?php 
if (isset($_POST['pid'])) { 
    $pid = $_POST['pid']; 
    $wasFound = false; 
    $i = 0; 

    if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1){ 
     $_SESSION["cart_array"] = array(1 => array("item_id" => $pid, "quantity" => 1)); 
    } else { 
     foreach ($_SESSION["cart_array"] as $each_item) { 
      $i++; 
      while (list($key, $value) = each($each_item)) { 
       if ($key == "item_id" && $value == $pid) { 
       array_splice($_SESSION["cart_array"], $i-1, 1,array(array("item_id" => $pid, "quantity" => $each_item['quantity'] + 1))); 
       $wasFound = true; 
       } 
      } 
     } 
     if ($wasFound == false) { 
     array_push($_SESSION["cart_array"], array("item_id" => $pid, "quantity" => 1)); 
    } 
    } 
} 
?> 
<?php 
if (isset($_GET['cmd']) && $_GET['cmd'] == "emptycart") { 
    unset($_SESSION["cart_array"]); 
} 
?> 
<?php 
$cartOutput = ""; 
if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) { 
    $cartOutput = "<h2 align='center'>Your shopping cart is empty</h2>"; 
} else { 
    $i = 0; 
    foreach ($_SESSION["cart_array"] as $each_item) { 
     $i++; 
     $cartOutput .= "<h2>Cart item $i</h2>"; 
     while (list($key, $value) = each ($each_item)) { 
      $cartOutput .= "key:$value<br />"; 
     } 
    } 
} 
?> 

любые предложения? Спасибо

+0

Где/как вы показываете идентификатор? –

ответ

0

В массиве array_splice есть ошибка: массивы индексируются начиная с 0. что мешает вам использовать foreach ($ arr as $ index => $ key) синтаксис? , и вы не эхо $ cartOutput, по крайней мере, в этом образце.

<?php 
session_start(); 

if (isset($_POST['pid'])) { 
    $pid = intval($_POST['pid']); 

    if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1){ 
     $_SESSION["cart_array"] = array(1 => array("item_id" => $pid, "quantity" => 1)); 
    } else { 
     $found= false; 
     foreach ($_SESSION["cart_array"] as $i => $each_item) { 
      if ($each_item["item_id"] == $pid) { 
       $_SESSION["cart_array"][$i]["quantity"] ++; 
       $found = true; 
      } 
     } 
     if (!$found) { 
       $_SESSION["cart_array"][] = array("item_id"=>$pid, "quantity"=>1); 
     } 
    } 
} 
?> 
<?php 
if (isset($_GET['cmd']) && $_GET['cmd'] == "emptycart") { 
    unset($_SESSION["cart_array"]); 
} 
?> 
<?php 
$cartOutput = ""; 
if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) { 
    $cartOutput = "<h2 align='center'>Your shopping cart is empty</h2>"; 
} else { 
    $i = 0; 
    foreach ($_SESSION["cart_array"] as $each_item) { 
     $i++; 
     $cartOutput .= "<h2>Cart item $i</h2>"; 
     while (list($key, $value) = each ($each_item)) { 
      $cartOutput .= "key:$value<br />"; 
     } 
    } 
} 
echo $cartOutput; 
?>