2016-05-31 5 views
0

アイテムの異なるプロパティを持つカートに入れるためのセッション配列を作成しました。各項目にはその項目のみを削除する削除ボタンがあります。PHPのセッション配列からカートアイテムを削除する

SESSIONを作成するために、私はARRAYを表示するための

session_start(); 
if (isset($_POST['submit'])) 
{ 
    $front = $_POST['front_select']; 
    $back = $_POST['back_select']; 
    $side = $_POST['side_select']; 
    $oid = $_POST['orderID']; 
    $pid = $_POST['pid']; 
    $cart = array (
    'oid' => $oid, 
    'front' => $front, 
    'back' => $back, 
    'pid' => $pid, 
    'side' => $side 

    ); 


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

    print_r($_SESSION['cart']); 
} 

を使用していた

if(isset($_SESSION['cart'])){ 
        $i = 0; 
         foreach ($_SESSION['cart'] as $item) { 
        if(isset($item['oid'])){ 
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12"> 
          <?php echo $i;?> 
          <h5>ORDER ID : <b id="oid">#<?php echo $item['oid']; ?></b> | ORDER TYPE : <b id="product_type">BLOUSE</b> | PRODUCT ID : <b id="product_id"><?php echo $item['pid']; ?></b></h5> 
          <hr> 
         </div> 
<a id="remove_btn" href="removefromcart.php?id=<?php echo $i; ?>" class="btn btn-danger waves-effect waves-light">Remove</a> 

} 
} 
} 

removefromcart.phpページ私は削除ボタンのページをクリックするたびに

<?php 

session_start(); 
if (isset($_GET['id'])){ 
$id = $_GET['id']; 
unset($_SESSION['cart'][$id]); 
    unset($cart[$id]); 
$_SESSION["cart"] = array_values($_SESSION["cart"]); 

header('Location: cart.php'); 

    echo $id ; 
} 
else 
{ 
    echo "ID NOT FOUND"; 
} 
?> 

はヘッダによるリフレッシュしますが、何も削除されません。 どうすればいいですか?私は本当にnoobコーダーを助けるためにスタックオーバーフローを信頼してください。私は、アレイ

if (isset($_POST['submit'])) 
{ 
    $front = $_POST['front_select']; 
    $back = $_POST['back_select']; 
    $side = $_POST['side_select']; 
    $oid = $_POST['orderID']; 
    $pid = $_POST['pid']; 

    $cart = array (
    'oid' => $oid, 
    'front' => $front, 
    'back' => $back, 
    'pid' => $pid, 
    'side' => $side 

    ); 

$_SESSION['oid'] = $oid; 
    $_SESSION['cart'][$oid] = $cart; 

    print_r($_SESSION['cart']); 
} 

とアレイ最初のキーは私のために問題を作成する0である

<div class="row"> 
           <a id="remove_btn" href="removefromcart.php?id=<?php echo $item['oid']; ?>" class="btn btn-danger waves-effect waves-light">Remove</a> 
          </div> 

Array ([0] => Array ([oid] => IT574deb7ddbfe3 [front] => IT1_front_6 [back] => IT1_back_2 [pid] => IT1 [side] => IT1_side_7) [IT574ded04c8af2] => Array ([oid] => IT574ded04c8af2 [front] => IT1_front_6 [back] => IT1_back_3 [pid] => IT1 [side] => IT1_side_2)) 

削除]ボタンのコードを取得を作成するためのコード以下で使用

AFTER 。私のカートの最初のアイテムは、削除ボタンのURL IDには異なるIDがありますが、残っています。あなたは、アレイ内の3つのアイテムを持っているのであれば

$_SESSION['cart'][] = $cart; 
        ^--generate new ID based on current length of array 

、および別のものを追加します。

+0

*一言で言えば... * => http://php.net/manual/en/function.error-reporting.php –

+0

申し訳ありませんでした –

+0

"FOR DISPLAYING ARRAY"コードが不適切にミキシングされていますPHPとHTML。 –

答えて

2

あなたの削除は、あなたがカートをビルドするとき、あなたのインデックスとしてその$ IDを使用していないので、動作していませんその新しいIDは3になります。たとえその$ idが9999などであっても同じです。

$_SESSION['cart'][$id] = $cart; 
        ^^^--- 

と予想されるように、あなたのunset()が動作します:

あなたはどこにでもインデックスとしてその$ IDを使用する必要があります。

+0

どうすればいいですか教えてください。 –

+0

こんにちは、ありがとうございました。私はたくさんの助けをしてくれてありがとうございます。 –