2

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

これが新しい商品をカートに追加する正しい方法かどうかわかりません。最後に、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>";
  }
4

3 に答える 3

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
}

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

于 2012-02-28T08:33:17.487 に答える
0

可能性: 別のセッション変数にカウンターを設定し、追加するたびにそれをインクリメントしますか?

または

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

または

インデックスをまったく指定しないでください:

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

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

私があなただったら、製品をデータベースに保存します..

于 2012-02-28T08:13:21.887 に答える
0

これを行う最も簡単な方法は、データベースに temp_cart テーブルを作成することです。ユーザーがカートに追加したアイテムを格納する必要があります。次に、チェックアウト ページで、select クエリを使用して簡単に表示できます。そうすれば、ユーザーが viewcart.php ページでカートを編集できるようにするのが簡単になります。

于 2012-02-28T08:26:46.267 に答える