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

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

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.