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

コロナによる需要変化 コロナパンデミックの影響で、人々は外に出られなくなり、自宅で過ごす時間が増えました。 この自粛ムードの中、下記のようなビジネスの需要変化が引き起こされています。 【利用者減少】 ...

2

米国レストランの決済時に毎日お世話になっていた「Square」のビジネスモデルについて本日はふれていきたいと思います。 「Square」とは、ネットにつながったモバイル端末と専用のカードリーダーを用意 ...

3

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

4

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

5

ナイキのSNKRSが、なぜこれほどまでに人気なのか?調べてみました。 きっかけは米国での友達との会話。彼は自分のシューズをみせて、「これ20万円もしたんだぜ。」と語ってくれました。 あまり靴に興味がな ...

-Blockchain, code, Metaverse, VR
-, ,

Copyright© BUSINESS HACKER , 2021 All Rights Reserved Powered by AFFINGER5.