2012-02-28 9 views
2

アレイを使用して商品ページからショッピングカートページにデータを渡そうとしています。 viewcart.phpが前のページ(価格、リンク、タイトル、および小売業者)から受け取る属性は複数あります。私はそれらをすべて配列を使って保存したいと思います。顧客がショッピングカートに追加する各追加項目について、配列$ _SESSION ['cart'] [$ i] ['attribute']をインクリメントするカウンタ変数($ i)を取得しようとしています。これはどうすればいいですか?カートに新しいアイテムを追加し、それらを繰り返してphpを使って表示するにはどうしたらいいですか?

これは、新しい商品をカートに追加する正しい方法であるとは確信していません。最後に、forループを使ってカート内のすべての商品を表示できるようにしたいと思います。これはショッピングカートのスクリプトでこれまでに始めているスタートです。

<?php 

    // The shopping cart needs sessions, so start one 
    session_start(); 

    @$link = $_GET['link']; 
$price = $_GET['price']; 
$title = $_GET['title']; 
$retailer = $_GET['retailer']; 


    if($link) { 
    //new item selected 
    if(!isset($_SESSION['cart'])) { 
     $_SESSION['cart'] = array(); 
     $_SESSION['items'] = 0; 
     $_SESSION['total_price'] ='0.00'; 
    } 

    if(isset($_SESSION['cart'][$link])) { 
     $_SESSION['cart'][$link]++; 
    } else { 
     $_SESSION['cart'][$link] = 1; 
    } 


    } 

    if(($_SESSION['cart']) && (array_count_values($_SESSION['cart']))) { 
    echo " in your cart and we're working to display them"; 
    } 
    else { 
    echo "<p>There are no items in your cart</p><hr/>"; 
    } 

?> 

これは私が使うことができると考えているforループです。配列のすべての項目を表示する方法を探しています。

for ($x=0; $x<=$i; $i++) 
    { 
    echo "The price is " . $_SESSION['cart'][$x][price] . " Retailer is " . $_SESSION['cart'][$x] [retailer] . "<br>"; 
    } 

答えて

0

これを行う最も簡単な方法は、データベース内のtemp_cartテーブルを作成することである..あなたは、ユーザーが追加する項目を格納すべきであなたの選択したクエリを使用して簡単に表示することができます。そうすれば、viewcart.phpページでカートを編集できるようになります。

0

あなたは可能性:カウンターで別のセッション変数を持っており、それがそれぞれ追加インクリメント ?

それとも

$i= Count($_SESSION['cart'])+1; 

それとも

のすべてのインデックスを指定しないでください:

$ TMP [ "カート"] [ "小売業"] = "123"; など。

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

私があなただった場合、私は、データベースに製品を保存することになる。..

0

私はあなたがこれをやっているようには好きではありません。セッション管理はショッピングカートにとって非常に簡単です。セッションをできるだけ軽くしておいてください。セッションでの価格の保存は、簡単に操作できるので、非常に悪い方法です。

ここでは、使用できるものの簡単な例を示します。

if(isset($_SESSION['items'][$_GET['item_id']])) { 
    $_SESSION['items'][$_GET['item_id']]++; //add one to the total count 
} else { 
    $_SESSION['items'][$_GET['item_id']] = 1; //If added for the first time 
} 

は、今では

foreach($_SESSION['items'] as $id => $count) { 
    echo $id; // product id 
    echo $count; // product count 
} 

P.Sを処理:入力をサニタイズすることを忘れないでください。私はそれを省略しました