ショッピングカートに商品を追加➁

ショッピングカート➀で作成した下記のような商品詳細のページで「カートに入れる」をクリックしたときに実行されるスクリプトを作成しましょう。

cart-insert.php

<?php session_start(); ?>
<?php require ‘header.php’; ?>

<?php
$id = $_REQUEST[‘id’];
if(!isset($_SESSION[‘product’])){
    $_SESSION[‘product’]=[];
}





カートを表す変数は$_SESSION[‘product’]です。便宜上、カート変数と呼ぶことにします。
ショッピングを始めた時点では、カート変数は定義されていません。
カート変数が未定義の場合には、カート変数に空の配置を設定して、カートを空の状態に初期化することにします。
カート変数が定義されているかどうかをisset関数で調べます。カート変数が未定義の場合には、  $_SESSION[‘product’]=[];を実行します。
$count = 0;
すでにカートに入っている商品と、同じ商品をカートに入れた場合に、個数を合計する処理を行います。個数を表す変数を作ります。
if (isset($_SESSION[‘product’][$id])){
    $count = $_SESSION[‘product’][$id][‘count’];
}
続いてカートに入れた商品と同じ商品がカート内にあるかどうかを、isset関数で調べます。
同じ商品がある場合には、すでにカート内にある商品の個数を取得して、変数$countに代入します。
$_SESSION[‘product’][$id]=[
    ‘name’=>$_REQUEST[‘name’],
    ‘preice’=>$_REQUEST[‘price’],
    ‘count’=>$count + $_REQUEST[‘count’]
];
ここではカートに商品を登録する処理をします。
前述のカートの構造に基づいて商品名、価格、個数を登録します。
商品名と価格については、リクエストパラメータで取得した値をそのまま格納します。すでにカートに同じ商品が入っていた場合は、$countに既に入っている個数が設定されているので、新しく追加した個数との合計個数が登録されます。
echo ‘<p>商品をカートに追加しました。</p>’;
echo ‘<hr>’;
require ‘cart.php’
?>
<?php require ‘footer.php’; ?>
require文を用いてcart.phpを読み込みます。require文は指定されたphpファイルを読み込み実行します。

カート内の商品一覧を表示する。

カートに入れられたことがわかります。さらにピーナッツを加えてみます。

ピーナッツが加えられ、また合計金額も加算されています。

それでは早速、作ってみましょう。

cart.php

<?php
if(!empty($_SESSION[‘product’])){
最初にカートが空かどうかを判定します。変数が空かどうかを調べるempty関数を使います。$_SESSION[‘product’])はカート変数です。カート変数は、カート内にある商品の配列になっています。商品が入っていない時には、配列は空の状態です。
echo ‘<table>’;
echo ‘<tr><th>商品番号</th><th>商品名</th>’;
echo ‘<th>価格</th><th>個数</th><th>小計</th><th></th></tr>’;
$total = 0;
foreach($_SESSION[‘product’] as $id=>$product){
   
}
?>
カート内の商品一覧を表示するには、forezch文を用いて、全ての商品番号について順に情報を取り出します。
カート変数から要素を1つずつ取り出します。変数$idには要素のキーが入り、$productに要素の値が入ります
echo ‘<tr>’;
    echo ‘<td>’, $id, ‘</td>’;
    echo ‘<td><a href=”detail.php?id=’, $id, ‘”>’, $product[‘name’], ‘</a></td>’;
    echo ‘<td>’, $product[‘price’], ‘</td>’;
    echo ‘<td>’, $product[‘count’], ‘</td>’;
 
 
商品番号を表示するには、$idを使って表示します。

例えば、価格を表示するには、$productを使って$product[‘price’]のように記述します。
  $subtotal = $product[‘price’] * $product[‘count’];
    $total+=$subtotal;
    echo ‘<td>’, $subtotal, ‘</td>’;
小計と合計を計算します。
小計は商品ごとに、「小計=価格*個数」
合計は最初に、$total=0でゼロにしておきます。
「+=」は左辺に右辺を足しこむ演算子です。ここでは合計に小計を足しこみます。
  echo ‘<td><a href=”cart-delete.php?id=’, $id, ‘”>削除</a></td>’;
    echo ‘</tr>’;
}
echo ‘<tr><td>合計</td><td></td><td></td><td></td><td>’, $total, ‘</td><td></td></tr>’;
echo ‘</table>’;
echo ‘ <a href=”product.php”>商品一覧へ戻る</a>’;
}else {
    echo ‘カートに商品がありません。’;
商品をカートから削除するために、先のような記述をします。

カート内の商品を削除する

次に「削除」をクリックしたらカート内の商品を削除する処理をしましょう。

削除をクリックすると・・・・

商品が削除されました。

cart-delete.php

<?php session_start(); ?>
<?php require ‘header.php’; ?>

<?php
unset($_SESSION[‘product’][$_REQUEST[‘id’]]);
echo ‘ご指示通り、カートから商品を削除しました。’;
echo ‘<hr>’;
require ‘cart.php’;
?>

<?php require ‘footer.php’; ?>
前途、上記のように
カート内の商品は、$_SESSION[‘product’][商品番号]のような「変数」に保存されています。削除した商品について、この変数を削除すれば、カートから取り除くことができます。変数を削除するにはunset関数を使います。
削除する商品番号は、リクエストパラメータから取得しています。そのリクエストパラメータ名はidです。
PHPについて

この本から引用、参考にして学び、完成させることができました。しかし、ここではプログラミング初心者の私が詳しく解説することは、おこがましく、難しく出来ません(ToT)
その点、この本では丁寧な解説が載っていますので、解説とともにコードを書き、完成させればより深く学ぶことができます(^.^)、実際、初心者の私でもわかりやすかったです。身に付け消えないスキルが3,000円弱ならコスパよく、買っておいてよかったと満足してます。


短期間でのレベルアップにはプロから学ぶのもありです。

キャリアアップに必要なスキルを取得しよう。

オンラインで受講ができるスクールですので、全国どこからでも。

就職・転職支援