Blockchain code Metaverse VR

Unity×VR×Blockchain(253)

スポンサーリンク

//tips

//php理解

最初に実施していたphpカート作成まで行う。webブラウザとの関係、xamppの設定も含めて理解する。まずはデータベース追加画面の作成から。

先にスタッフの登録画面は作っていたので、そちらの拡充を行っていく。phpのブラウザ表示は下記のようにhttpを使用してフォルダのパスを指定するurlを打ち込むことで表示できる。

http://localhost/staff/staff_add.php

下記を加えることで「○○さんを追加しました。」という表示を出せるようになる。

try{プログラム内容}catch(Exception $e){問題発生時のお詫びの文言、強制exit命令}でエラーストップを組み込んでいる。

データベースに接続した後は、sqlで命令を行い、最後にデータベースを切断することで内容反映が行われるのできちんと切断までを実行する。

setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)はPDOでの例外エラーを詳細にするためのオプションで、デバッグ時に役立つもののよう。

https://www.toumasu-program.net/entry/2019/12/20/102903

すぐにprepareの方に行かない。

$dsn='mysql:dbname=shop;host=localhost;charset=utf8’;//shopデータベース

$user='root’;//ユーザ名root
$password=‘’;//パスワードなし

$dbh=new PDO($dsn,$user,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

Sql文のINSERT INTOでテーブル名と列、リクエストパラメータを指定し、prepareで挿入準備を行う。

$sql = 'INSERT INTO mst_staff(name,password) VALUES (?,?)';
$stmt=$dbh->prepare($sql);

まだリクエストパラメータの部分は設定していないので?に入れたい順番に記載し、executeで処理を実行させる。

$data[]=$staff_name;
$data[]=$staff_pass;
$stmt->execute($data);

データベースから切断するためにはpdoで生成した$dbhにnullを挿入する。データベースを操作したら切断は必須の処理とのこと。

データベースサーバがダウンした際の安全策としてtry~catchで全体を包む。

<body>
<?php

try
{
$staff_name=$_POST['name'];
$staff_name=$_POST['pass'];

$staff_name=htmlspecialchars($staff_name,ENT_QUOTES,'UTF-8');
$staff_pass=htmlspecialchars($staff_pass,ENT_QUOTES,'UTF-8');
$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 = 'INSERT INTO mst_staff(name,password) VALUES (?,?)';
$stmt=$dbh->prepare($sql);
$data[]=$staff_name;
$data[]=$staff_pass;
$stmt->execute($data);

$dbh=null;

print $staff_name;
print'さんを追加しました。<br/>';
}
catch(Exception $e)
{
print'ただいま障害によろ大変迷惑をおかけしております。';
exit();

}

?>
<a href="staff_list.php">戻る</a>
</body>

次にスタッフ一覧画面を作成していく。

ここでは先のものをベースにして新たにselect文を使用している。

SELECT name FROM mst_staff where 1

SELECT nameは列指定、FROMはテーブル指定、whereは、id=1ではなく、1で全てを取得するという意味になるよう。ここは勘違いしない。

Name部分は複数指定できるので

SELECT code,name FROM mst_staff where 1

としてname列とcode列を取得できる。

<body>
<?php

try{

$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 code,name FROM mst_staff WHERE 1';
$stmt=$dbh->prepare($sql);
$stmt->execute();

$dbh=null;

print'スタッフ一覧<br/></br/>';
print’<form method=‘post’ action=“staff_edit.php”>’;

while(true){

$rec=$stmt->fetch(PDO::FETCH_ASSOC);
if($rec==false)
{
break;
}
print $rec['name'];
print '<br/>';
}

}catch(Exception $e){

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

?>

</body>

一部加筆の上ブラウザに表示してみる。
http://localhost/staff/staff_list.php

スタッフ情報の修正画面を作成していく。

ちなみに、$dbhでインスタンスを生成する際に変数ではなく、そのまま$dbh=new PDO(…,’root’,...);などとすることもできるが見やすいようにここでは変数に格納してから引数にしている。

また<?php?>の外に出すことで普通にechoを使わずにhtmlを記載することができるので覚えておく。echoの使用はかなり面倒だった。

またテクニックとしてhtmlのタグの中にphpの変数を出すために
<input type=“text” name=“name” value=“<?php print $staff_name;?>”>
のように短文のphpを組み込むことができることも覚えておく。

Phpの中にhtmlを書き込む場合はechoかprintがあるが、printの方が見やすいように思われる。

print'<input type ="hidden" name="code" value="'.$staff_code.'" >';

.で文字列同士を繋ぐ必要があるのでそれは忘れないようにする。

データベースからの取得内容は一人分のコードなのでそこまで複雑ではない。

<body>
<?php

try{
$staff_code=$_POST['staffcode'];

$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 FROM mst_staff WHERE code=?';
$stmt=$dbh->prepare($sql);
$data[]=$staff_code;
$stmt->execute($data);

$rec=$stmt->fetch(PDO::FETCH_ASSOC);
$staff_name=$rec['name'];

$dbh=null;

}catch(Exception $e){

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

?>

スタッフ修正<br/>
<br/>
スタッフコード<br/>
<?php print $staff_code;?>
<br/>
<br/>
<form method ="post" action="staff_edit_check.php">
<input type="hidden" name="code" value="<?php print $staff_code;?>">
スタッフ名<br/>
<input type ="text" name="name" style="width:200px" value="<?php print $staff_name;?>"><br/>

パスワードを入力ください<br/>
<input type="password" name="pass" style="width:100px"><br/>
パスワードをもう一度入力してください<br/>
<input type="password" name="pass2" style="width:100px"><br/>
<br/>
<input type="button" onclick="history.back()" value="戻る">
<input type="submit" value="OK">
</form>

</body>

データの修正の場合には先に確認したように

UPDATE mst_staff SET name=“…” WHERE code=1
UPDATE テーブル SET 列名=“列の値” WHERE 条件

mst_staffテーブルのcode=1の名前を…に変更、という意味になる。

人気の記事

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.