//tips
嶋津様打ち合わせ
unityviewのwebGLでの3D表示は難しそう。Androidのアプリ対応のものは下記にあった。
https://github.com/IanPhilips/UnityOculusAndroidVRBrowser
近頃はノーコードでのアプリ作成サイトも出てきたとのこと。決済機能も対応しているそう。素晴らしい。学習コストを下げて製作物をリリースできる。
https://www.adalo.com/
//php理解
カート実装の続き。
同じ商品をカートに入れる場合には個数を合計する必要があるので、$count=0;で商品の個数をカウントする。
既にカートの中に商品を入れているかどうかを確認するためにif(isset($_SESSION[‘product’][$id]))を使用。
同じ商品がある場合には$count=$_SESSION[‘product’][$id][‘count’]とし、count変数に代入。
Phpの=>で再度混乱したので調べた内容を記す。
Phpの配列は、特定の数のカンマで区切られた キー => 値 の組を引数にする。下記の用にarrayの内容を[]で短縮して表すことができ、自動的にインデックスが振られるものにkeyを上書きできる形。C#の辞書型のような形を持っているよう。
$array = array(
"foo" => "bar",
"bar" => "foo",
);
$array = [
"foo" => "bar",
"bar" => "foo",
];
さらに、下記のように部分的にkeyを設定することもできる。
$array = array('りんご', 'もも', 'なし'); // キーは0から順に0,1,2が割り振られる
$array = array('apple'=>'りんご', 'peach'=>'もも', 'pear'=>'なし');
$array = array('バナナ', 'apple'=>'りんご', 'peach'=>'もも', 'pear'=>'なし', 'みかん');
https://qiita.com/shuntaro_tamura/items/784cfd61f355516dfff0
なので、カートに新しい商品を登録する際には、商品名と価格はパラメータから取得したものを格納し、countはパラメータ個数と既存の個数を合算したものを合計としている。
$_SESSION[‘product’][$id]=[
‘name’=>$_REQUEST[‘name’],
‘price’=>$_REQUEST[‘price’],
‘count’=>$count+$_REQUEST[‘count’],
];
カートの商品一覧を表示する処理をphpでまとめrequireで読み込めるようにしておく。
まずは!empty($_session[‘product’]でカートが空かどうかを判定。
$_session[‘product’]はカート変数でカート内にある商品の配列になっている。
商品配列の形としては、
$_session[‘product’][商品番号A]
$_session[‘product’][商品番号B]
…
のようになっている。
カート内の商品一覧を表示するためにはforeachを用いて全ての商品番号順に情報を取り出していく。
foreach($_SESSION[‘product’] as $id=>$product)では変数$idにkeyが、$productにvalueに当たるものが格納される。
例えば、
変数:$_SESSION[‘product’][5][‘name’] 値:’カシューナッツ’
の場合には$idには5が入り、$productには
$product[‘name’]
$product[‘price’]
$product[‘count’]
上記の値である’カシューナッツ’’250’3’などが入ることになる。
商品を削除する場合は、a href=“cart-delete.php?id=”,$id,’”>削除</a>として別途phpを実行する。
<?php
if(!empty($_session[‘product’])){
echo ‘<table>’;
echo’<th>商品番号</th><th>商品名</th>’
echo’<th>価格</th><th>個数</th><th>小計</th>’;
$total=0;
foreach($_SESSION[‘product’] as $id=>$product){
echo ‘<tr>’
echo ‘<td>’,$id,‘</td>’;
echo ‘<td><a href=“detail.php?id=”,$id,’”>’,$product[‘name’],’</a></td>’;
echo ‘<td>’,$product[‘price’],‘</td>’;
echo‘<td>’,$product[‘count’],‘</td>’;
$subtotal=$product[‘price’]*$product[‘count’];
$total+=$subtotal;
echo ‘<td>’,$subtotal,‘</td>’;
echo ‘<td><a href=“cart-delete.php?id=”,$id,’”>削除</a></td>’;
echo ‘</tr>’;
}
echo’<tr><td>合計</td><td></td><td></td><td></td><td>’,$total,’</td><td></td></tr>’;
echo’</table>’;
}else{
echo ’カートに商品がありません’;
}
?>
ここからはカート内の商品削除のスクリプトを確認する。
内容としてはカート内にある商品の中から指定した商品を削除する。商品を削除した後はカートの商品一覧を再表示する。$_SESSION[‘product’][商品番号]で保存されているカートの中身をunsetで削除すれば良い。
<?php
session_start();
unset($_SESSION[‘product’][$_REQUEST[‘id’]]);
echo ‘カートから商品を削除しました。’;
echo ‘<hr>’;
require ‘cart.php’;
?>
お気に入りへの追加方法も確認していく。
お気に入りの商品はデータベースの中のfavoriteテーブルの中に顧客番号と、商品番号のセットで保存する。
お気に入り機能を使うにはsession情報を使用するのでログインしている必要があり、セッションオブジェクトに_SESSION[‘customer’])が存在するかをチェックし、ログイン状態を確認する。
ログインしていたら、insert into favorite values(?,?)とし、リクエストパラメータ二個を抱えた状態で挿入することとし、executeでセッション情報を?に引き渡す。
<?php
session_start();
if(isset($_SESSION[‘customer’])){
$pdo=new PDO(‘myswl:host=localhost;dbname=shop;charset=utf8’,’staff’,’password’);
$sql=$pdo->prepare(‘insert into favorite values(?,?)’);
$sql->execute([$_SESSION[‘customer’][‘id’],$_REQUEST[‘id’]]);
echo’お気に入りに商品を追加しました’;
echo’<hr>’;
require ‘favorite.php’;
}else{
echo’お気に入りに商品を追加するにはログインしてください’;
}
?>
現在はxamppを使用しているが、実際のwebアプリの運用はLinuxとなるため、ファイルの配置やmysqlの使用方法は異なるよう。
一旦phpの知識を蓄えたら、unityと連動できるecサイトを作れそうなプラットフォームを探してみる。直接連動はできなくてもphpの流れと仕組みがわかっていればカスタマイズすることは可能そう。
なので、もう少し、xamppでphpを扱ってみる。