Blockchain code Metaverse VR

Unity×VR×Blockchain(260)

スポンサーリンク

//tips

//php理解

まずはカートに商品を入れていく。

カートは配列なので$cart[]=$pro_code;tpすることでカートに商品を入れている。画面遷移した後もカートに入れた情報を残すために$_SESSIONに保存している。

$cart[]=$_SESSION['cart'];
$cart[]=$pro_code;
$_SESSION['cart']=$cart;

とすることで以前の情報を引き継いだ後に新しいものを追加できる。

<?php
session_start();
session_regenerate_id(true);
if(isset($_SESSION['memberlogin'])==false){

print 'ようこそゲスト様 ';
print'<a href="member_login.html">会員ログイン</a><br/>';
print '<br/>';

}else{

print'ようこそ';

print $_SESSION['member_name'];
print'様 ';
print '<a href="member_logout.php">ログアウト</a><br/>';
print'<br/>';
}

?>
<body>
<?php

try{
$pro_code=$_GET['procode'];

$cart[]=$_SESSION['cart'];
$cart[]=$pro_code;

$_SESSION['cart']=$cart;

foreach($cart as $key=>$val){

print $val;
print '<br/>';
}

}catch(Exception $e){

print'ただいま障害により大変ご迷惑をおかけしております';
exit();
}

?>
カートに追加しました<br/>
<br/>
<a href="shop_list.php">商品一覧に戻る</a>

</body>

一つ目の商品をカートに入れる場合は現状ではエラーが出てしまうので、

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

としておく。

今度はカートの中身を見る機能を追加していく。

一旦var_dump($cart);で配列の内容全てをコード形式で表示し、確認を容易にしている。カートの中身を確認できれば良かったので、exitでプログラムを停止している。

<?php
session_start();
session_regenerate_id(true);
if(isset($_SESSION['memberlogin'])==false){

print 'ようこそゲスト様 ';
print'<a href="member_login.html">会員ログイン</a><br/>';
print '<br/>';

}else{

print'ようこそ';

print $_SESSION['member_name'];
print'様 ';
print '<a href="member_logout.php">ログアウト</a><br/>';
print'<br/>';
}

?>
<body>
<?php

try{
$cart=$_SESSION['cart'];
var_dump($cart);
exit();

$dsn='mysql:dbname=shop;host=localhost;charset=utf8';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

$sql='SELECT name,price,gazou FROM mst_product WHERE code=?';
$stmt=$dbh->prepare($sql);
$data[]=$pro_code;
$stmt->execute($data);

$rec=$stmt->fetch(PDO::FETCH_ASSOC);
$pro_name=$rec['name'];
$pro_price=$rec['price'];
$pro_gazou_name=$rec['gazou'];

$dbh=null;

if($pro_gazou_name==''){

$disp_gazou='';
}else{

$disp_gazou='<img src="../product/gazou/'.$pro_gazou_name.'">';
}

print '<a href="shop_cartin.php?procode='.$pro_code.'">カートに入れる</a><br/><br/>';

}catch(Exception $e){

print'ただいま障害により大変ご迷惑をおかけしております';
exit();
}

?>

商品情報参照<br/>
<br/>
商品コード<br/>
<?php print $pro_code;?>
<br/>
商品名<br/>
<?php print $pro_name;?>
<br/>
価格<br/>
<?php print $pro_price;?>円
<br/>
<?php print $disp_gazou;?>
<br/>
<form>
<input type="button" onclick="history.back()" value="戻る">
</form>

</body>

 

表示されたarray(1) { [0]=> string(1) "1" }はarray(1) で格納データ数が一つであることを示し、string(1)は文字の長さが1であることを指す。”1”が$cart[0]の中身となる。

さらに詳細を記載していく。

取り出したカートデータを、

$pro_name[]
$pro_price[]
$pro_gazou[]

の配列にデータを再配置している。

<?php
session_start();
session_regenerate_id(true);
if(isset($_SESSION['memberlogin'])==false){

print 'ようこそゲスト様 ';
print'<a href="member_login.html">会員ログイン</a><br/>';
print '<br/>';

}else{

print'ようこそ';

print $_SESSION['member_name'];
print'様 ';
print '<a href="member_logout.php">ログアウト</a><br/>';
print'<br/>';
}

?>
<body>
<?php

try{
$cart=$_SESSION['cart'];
$max=count($cart);

$dsn='mysql:dbname=shop;host=localhost;charset=utf8';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

foreach($cart as $key=>$val){

$sql='SELECT code,name,price,gazou FROM mst_product WHERE code=?';
$stmt=$dbh->prepare($sql);
$data[0]=$val;
$stmt->execute($data);

$rec=$stmt->fetch(PDO::FETCH_ASSOC);

$pro_name[]=$rec['name'];
$pro_price[]=$rec['price'];

if($rec['gazou']==''){

$pro_gazou[]='';
}else{

$pro_gazou[]='<img src="../product/gazou/'.$rec['gazou'].'">';
}
$dbh=null;

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

print $pro_name[$i];
print $pro_gazou[$i];
print $pro_price[$i].'円';;
print '<br/>';
}
}

}catch(Exception $e){

print'ただいま障害により大変ご迷惑をおかけしております';
exit();
}

?>

<form>
<input type="button" onclick="history.back()" value="戻る">
</form>

</body>

今後の作業効率を上げるためカートを空にするスクリプトも作成しておく。

<?php
session_start();
$_SESSION=array();

if(isset($_COOKIE[session_name()])==true){

setcookie(session_name(),'',time()-42000,'/');

}
session_destroy();

?>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ログアウト</title>
</head>
<body>

カートを空にしました<br/>

</body>

これで任意にカートを空に出来るようになった。

カートに商品の数量も追加していく。

カート内の一覧を表示するループの外側をformでくくる形にし、inputで数量を入力できるようにした。

Forの中に書かれた<input type="text" name="kazu<?php print $i;?>" value="<?php print $kazu[$i];?>">は商品ごとに異なる名前をつけているkazu0,kazu1…というように数字によって識別可能にしている。

<?php
session_start();
session_regenerate_id(true);
if(isset($_SESSION['memberlogin'])==false){

print 'ようこそゲスト様 ';
print'<a href="member_login.html">会員ログイン</a><br/>';
print '<br/>';

}else{

print'ようこそ';

print $_SESSION['member_name'];
print'様 ';
print '<a href="member_logout.php">ログアウト</a><br/>';
print'<br/>';
}

?>
<body>
<?php

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

$dsn='mysql:dbname=shop;host=localhost;charset=utf8';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

foreach($cart as $key=>$val){

$sql='SELECT code,name,price,gazou FROM mst_product WHERE code=?';
$stmt=$dbh->prepare($sql);
$data[0]=$val;
$stmt->execute($data);

$rec=$stmt->fetch(PDO::FETCH_ASSOC);

$pro_name[]=$rec['name'];
$pro_price[]=$rec['price'];

if($rec['gazou']==''){

$pro_gazou[]='';
}else{

$pro_gazou[]='<img src="../product/gazou/'.$rec['gazou'].'">';
}
$dbh=null;

}

}catch(Exception $e){

print'ただいま障害により大変ご迷惑をおかけしております';
exit();
}

?>

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

<?php
for($i=0;$i<$max;$i++){
?>
<?php print $pro_name[$i]; ?>
<?php print $pro_gazou[$i];?>
<?php print $pro_price[$i];?>円
<input type="text" name="kazu<?php print $i;?>" value="<?php print $kazu[$i];?>">
<?php print $kazu[$i];?>

<br/>
<?php
}
?>

<input type="hiden" name="max" value="<?php print $max;?>">
<input type="submit" value="数量変更"><br/>
<input type="button" onclick="history.back()" value="戻る">
</form>

</body>

数量の変更を行えるようにスクリプトを追加。受け取ったポストの中身に安全対策を施し、商品の数だけループを回し、受け取ったデータから商品の数量を割り当てている。これでinputのvalueの中身が変更されるようになる。

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

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

$post=sanitize($_POST);

$max=$post['max'];

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

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

$_SESSION['kazu']=$kazu;

header('Location:shop_cartlook.php');
exit();

?>

さらに合計金額を表示していく。

<?php print $pro_price[$i]*$kazu[$i];?>円をshop_cartlook.phpに追加する。

なぜか商品数の認識がうまくいかない。kazuの設定部分から見直していく

 

人気の記事

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.