2013-03-16 2 views
2

항목이 장바구니에 추가되면 항목 ID와 해당 항목의 수량이 표시됩니다. 이 경우 수량 만 세션에서 파싱됩니다. 항목 ID가 표시되지 않습니다. 또한 다른 항목이 추가되면 카트에는 별도의 수량으로 두 번째 항목이 표시되어야합니다.세션/배열 문제, 쇼핑 카트

<?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

여기서/id는 어떻게 표시하나요? –

답변

0

array_splice에 오류가 있습니다. 배열의 색인이 0부터 시작됩니다. foreach ($ arr = $ 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; 
?>