前回[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行目:その他はショッピングカートに戻る
ショッピングカートの数量更新と削除ができましたので
次は購入手続きです。
コメント