PHPで簡単ショッピングカート!【4.カートの数量更新・削除】

PHP

前回[item_cart.php][fshopstyle.css]とを
説明しました。

今回は[change_num.php]を説明します。

カートの数量更新・削除

ファイル名:change_num.php

<記述例>

<?php
session_start();
session_regenerate_id(true);

require_once('../com_func.php');

$post=sanitize($_POST);

$max=$post['max'];
for($i=0; $i<$max; $i++)
{
  if(preg_match("/^[0-9]+$/",$post['num'.$i])==0)
  {
    print '数量に誤りがあります。';
    print '<a href="item_cart.php">カートに戻る</a>';
    exit();
  }
  if($post['num'.$i]<1 || 100<$post['num'.$i])
  {
    print '数量は1個以上、100個までです。';
    print '<a href="item_cart.php">カートに戻る</a>';
    exit();
  }
  $num[]=$post['num'.$i];
}

$id=$_SESSION['id'];
$name=$_SESSION['name'];
$price=$_SESSION['price'];

for($i=$max; 0<=$i; $i--)
{
  if(isset($post['del'.$i])==true)
  {
    array_splice($id,$i,1);
    array_splice($name,$i,1);
    array_splice($price,$i,1);
    array_splice($num,$i,1);
  }
}
$_SESSION['id']=$id;
$_SESSION['name']=$name;
$_SESSION['price']=$price;
$_SESSION['num']=$num;
if(isset($post['cclear'])==true)
{
  unset($_SESSION['id']);
  unset($_SESSION['name']);
  unset($_SESSION['price']);
  unset($_SESSION['num']);
}
if(isset($post['back'])==true)
{
  header('Location: ../items/item_list.html');
}
else if(isset($post['next'])==true)
{
  if(count($id)==0){
    header('Location: item_cart.php');
  }else{
    header('Location: inputinfo.html');
  }
}
else
{
  header('Location: item_cart.php');
}
?>

2行目:セッションスタート
3行目:session_regenerate_id(true);
セキュリティの関係(セッションハイジャック防止)
のため、セッションスタートした後に
セッションIDを新しく生成したものに
変更する命令をいれます。

5行目:関数読み込み
7行目:フォームから送られたデータをサニタイズ
9行目:送られた商品アイテム数を$maxに代入
10行目:for命令で $i=0 から1つずつ増やし($i++)
    商品アイテム数($max)だけ繰り返す
12行目:preg_match 命令で正規表現を使い入力された
    データが半角数字かどうかをチェック
14~15行目:誤りがある旨表示
16行目:exit()で強制終了
18行目:数量が1以上100までかどうかのチェック
20~23行目:数量が範囲外の表示をしexit()で強制終了
24行目:$num(数量)に今入力されている数量を代入
27~29行目:$num 以外はセッションに保存されたデータを配列変数へ代入
31行目:for命令で $i=$max(商品数)から
    1つずつ減らし($i–)0まで繰り返す
33行目:削除ボタンが押されていたら以下の処理をする

35~38行目:array_spliceで配列の要素を削除

書式例:array_splice(配列変数,削除開始位置,削除する配列要素数);

例:array_splice($id,$i,1);
これは[$id]の[$i]番目を1つ削除するということです。

41~44行目:削除した後のデータをセッションに保存
45行目:カートクリアが押されていたら47~50行目の処理を行う
47~50行目:unsetを使いセッションに保存されたデータを破棄
52~55行目:[商品一覧に戻る]を押していたら商品一覧へ移動
56行目:[ご購入手続きへ]を押していたら以下の処理
58行目:商品が空であれば
59行目:ショッピングカートへ移動
61行目:商品があれば顧客情報入力へ移動
66行目:その他はショッピングカートに戻る

ショッピングカートの数量更新と削除ができましたので
次は購入手続きです。

コメント

タイトルとURLをコピーしました