Blockchain code Metaverse VR

Unity×VR×Blockchain(263)

スポンサーリンク

//tips

//php理解

商品を削除してカートが空になった場合、商品が入っていないことを明示する。

if($max==0){

print'カートに商品が入っていません。<br/>';
print '<br/>';
print '<a href="shop_list.php">商品一覧へ戻る</a>';
exit();
}
また、カートが最初から空の場合は、$_SESSIONの中にcartもkazuも存在しないので、問題が生じる。issetで有無を確認する処理も追加する。

try{

if(isset($_SESSION['cart'])==true){

$cart=$_SESSION['cart'];
$kazu=$_SESSION['kazu'];
$max=count($cart);
}else{

$max=0;
}

if($max==0){

print'カートに商品が入っていません。<br/>';
print '<br/>';
print '<a href="shop_list.php">商品一覧へ戻る</a>';
exit();
}

ここからは同じ商品をカートに入れないようにする方法を考えていく。

テキスト入力を受け取け、格納される$pro_codeと同じ商品コードを$cartで見つけたら、商品一覧に戻るようにする。

$cartの配列内から項目をチェックするにはin_arrayメソッドを使用し、

in_array(‘ピーマン’,$yasai);

のように$yasai配列の中にピーマンが値として存在しているかを調べる。

すでにカート内にデータがあった場合に探せば良いので、下記のようになる。

if(isset($_SESSION['cart'])==true){
$cart=$_SESSION['cart'];
$kazu=$_SESSION['kazu'];

if(in_array($pro_code,$cart)==true){

print'その商品はすでにカートに入っています。<br/>';
print'<a href="shop_list.php">商品一覧に戻る</a>';
exit();
}
}

数量の入力部分にも対策を施す必要があるのでそちらも確認していく。

現在はマイナスでの入力や数字以外での入力の場合の対処ができていない。

なので正規表現で半角数字のみに限定する。

正規表現はこのようにできるのでpreg_match('/^[0-9]+$/',$pro_price)==0)、forループの中に内容を組み込む。

for($i=0;$i<$max;$i++){

if(preg_match('/^[0-9]+$/',$post['kazu'.$i])==0){

print '数量に誤りがあります。';
print'<a href="shop_cartlook.php">カートに戻る</a>';
exit();
}

$kazu[]=$post['kazu'.$i];
}

数字の大きさも規定したいので下記のように追加。

for($i=0;$i<$max;$i++){

if(preg_match('/^[0-9]+$/',$post['kazu'.$i])==0){

print '数量に誤りがあります。';
print'<a href="shop_cartlook.php">カートに戻る</a>';
exit();
}

if($post['kazu'.$i]<1||10<$post['kazu'.$i]){
print '数量は一個以上十個までとなります。';
print'<a href="shop_cartlook.php">カートに戻る</a>';
exit();
}

$kazu[]=$post['kazu'.$i];

}

Htmlのテーブルで囲むことで見た目がかなり改善されるのでそちらも実施。

カートの中身<br/>
<br/>
<form method="post" action="kazu_change.php">

<table border="1">
<tr>
<td>商品</td>
<td>商品画像</td>
<td>価格</td>
<td>数量</td>
<td>小計</td>
<td>削除</td>
</tr>

<?php
for($i=0;$i<$max;$i++){
?>

<tr>
<td><?php print $pro_name[$i]; ?></td>
<td><?php print $pro_gazou[$i];?></td>
<td><?php print $pro_price[$i];?>円</td>

<td><input type="text" name="kazu<?php print $i;?>" value="<?php print $kazu[$i];?>"> </td>

<td><?php print $pro_price[$i]*$kazu[$i];?>円</td>
<td><input type = "checkbox" name="sakujo<?php print $i;?>"></td>

</tr>

<?php
}
?>
</table>

ここからは注文を受け付ける段階に入っていく。

顧客情報の登録フォームなどを作成し、顧客情報の管理も行う必要がある。

<a href="shop_form.html">ご購入手続きへ進む</a><br/>

を追加し、注文フォームを作成していく。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注文フォーム</title>
</head>
<body>

お客様情報を入力してください。<br/>
<form method="post" action="shop_form_check.php">

お名前<br/>
<input type="text" name="onamae" style="width:200px"><br/>

メールアドレス<br/>
<input type="text" name="email" style="width: 200px"><br/>

郵便番号<br/>
<input type="text" name="postal1" style="width: 50px">-
<input type="text" name="postal2" style="width: 80px"><br/>

住所<br/>
<input type="text" name="address" style="width: 500px"><br/>

電話番号<br/>
<input type="text" name="tel" style="width: 150px"><br/>
<input type="button" onclick="history.back()" value="戻る"><br/>
<input type="submit" value="OK" ><br/>
</form>

</body>
</html>

顧客情報の入力画面はできたので入力情報チェックのスクリプトを作成していく。

上記に記載した内容を正規表現で確認していく必要がある。

定番の正規表現は下記のように定型化されていることを覚えておく。

https://blog.codecamp.jp/php_regular_expression

https://qiita.com/ken97/items/9276f59f3148bb8fbe67

人気の記事

1

皆さん、ついに、エアラインでも、サブスクリプションが始まったのはご存じですか? まだ実験段階ですが、ANAが、定額全国住み放題サービスを提供する「ADDress」と組んで、国内線を4回まで定額利用可能 ...

2

無料でネットショップを開けるアプリとして多くの人に驚きを与えたBASE株式会社が、2019年10月25日東証マザーズに上場しました。2020年2月時点で90万店を超えるショップを抱えるまでに成長してい ...

3

2011年にサービスを開始してから圧倒的な成長率を誇るインテリア通販サイト 【FLYMEe/フライミー】を皆さんご存じでしょうか。 「自分のイメージするインテリア、本当に欲しいインテリアがどこにあるの ...

4

ついに、noteの月間アクティブユーザー数が4400万人(2020年3月時点)に到達しました。 そもそも、「note」とは、クリエイターが、文章やマンガ、写真、音声を投稿することができ、ユーザーはその ...

5

ボードゲームカフェが1日2回転で儲かるという記事をみつけたので興味を持ち、調べてみました。 まずは、需要がどれくらいあるのか、市場のようすからみていきましょう。 世界最大のボードゲーム市場はドイツで、 ...

-Blockchain, code, Metaverse, VR
-, ,

Copyright© BUSINESS HUNTER , 2023 All Rights Reserved Powered by AFFINGER5.