Blockchain code Metaverse VR

Unity×VR×Blockchain(256)

スポンサーリンク

//tips

//php理解

続いて商品修正画面を確認。

<body>
<?php

try
{
$pro_name=$_POST['code'];
$pro_name=$_POST['name'];
$pro_price=$_POST['price'];

$pro_code=htmlspecialchars($pro_code,ENT_QUOTES,'UTF-8');
$pro_name=htmlspecialchars($pro_name,ENT_QUOTES,'UTF-8');
$pro_price=htmlspecialchars($pro_price,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 = 'UPDATE mst_product SET name=?,price=? WHERE code=?';
$stmt=$dbh->prepare($sql);
$data[]=$pro_name;
$data[]=$pro_price;
$data[]=$pro_code;
$stmt->execute($data);

$dbh=null;

print'修正しました。<br/>';
}
catch(Exception $e)
{
print'ただいま障害によろ大変迷惑をおかけしております。';
echo $e->getMessage();
exit();

}

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

商品削除実行画面も作成。

<body>
<?php

try
{
$pro_code=$_POST['code'];

$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 = 'DELETE FROM mst_product WHERE code=?';
$stmt=$dbh->prepare($sql);

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

$dbh=null;

}
catch(Exception $e)
{
print'ただいま障害によろ大変迷惑をおかけしております。';
exit();

}

?>

削除しました。</br>
<br/>
<a href="pro_list.php">戻る</a>
</body>

商品画像の追加方法を確認していく。画像のカラムは画像だがvarchar型で定義されており、画像ファイル名を管理し、実際の画像は画像用のフォルダに格納する。productフォルダにgazouフォルダを作成。

そして登録画面に画像情報を追加する。

<!DOCTYPE html>
<html>
<head>
<meta charset-"UTF-8">
<title>登録画面</title>
</head>
<body>
商品追加<br/>
<br/>
<form method="post" action="pro_add_check.php" enctype="multipart/form-data">
商品名を入力してください<br/>
<input type="text" name="name" style="width:200px"><br/>
価格を入力してください<br/>
<input type="text" name="price" style="width:50px"><br/>
画像を選んでください<br/>
<input type="file" name="gazou" style="width:400px"><br/>
<br/>
<input type ="button" onclick="history.back()" value="戻る">
<input type ="submit" value="OK">

</form>
</body>
</html>

画像もinputタグで取り込むことができ、input type=“file”とする。これにより画像だけでなくファイルを取り込めるようになる。

ファイルをうまく取り込むためにはformタグにenctypeの情報を追加しておく必要があるので忘れない。

ここから選んだ画像ファイルをチェックする機能を追加していく。

<body>
<?php

$pro_name=$_POST['name'];
$pro_price=$_POST['price'];
$pro_gazou=$_FILES['gazou'];

$pro_name=htmlspecialchars($pro_name,ENT_QUOTES,'UTF-8');
$pro_price=htmlspecialchars($pro_price,ENT_QUOTES,'UTF-8');

if($pro_name=='')
{
print'商品名が入力されていません。<br/>';
}
else
{
print'商品名:';
print$pro_name;
print'<br/>';
}

if(preg_match('/^[0-9]+$/',$pro_price)==0)
{
print'価格をきちんと入力してください。<br/>';
}else{

print'価格:';
print $pro_price;
print'円<br/>';
}

if($pro_gazou['size']>0){

if($pro_gazou['size']>1000000)
{
print'画像が大きすぎます';

}else{
move_uploaded_file($pro_gazou['tmp_name'],'./gazou/'.$pro_gazou['name']);
print'<img src="./gazou/'.$pro_gazou['name'].'">';
print'<br/>';

}

}

if($pro_name==''||preg_match('/^[0-9]+$/',$pro_price)==0||$pro_gazou['size']>1000000)
{
print'<form>';
print'<input type="button" onclick="history.back()" value="戻る">';
print'</form>';
}
else
{
print'上記の商品を追加します。<br/>';
print'<form method ="post" action="pro_add_done.php" >';
print'<input type ="hidden" name="name" value="'.$pro_name.'" >';
print'<input type ="hidden" name="price" value="'.$pro_price.'" >';
print'<input type ="hidden" name="gazou_name" value="'.$pro_gazou['name'].'" >';

print'<br/>';
print'<input type ="button" onclick="history.back()" value="戻る" >';
print'<input type ="submit" value="OK" >';
print'</form>';

}

?>

</body>

これで実行してみると下記のエラーが発生。手動でproductのgazouフォルダにjpg画像を挿入し、画像は表示できた。コードのgazouフォルダへのアップロード命令が実行できていないよう。

Warning: move_uploaded_file(./gazou/broccoli.jpg): failed to open stream: Permission denied in /Applications/XAMPP/xamppfiles/htdocs/product/pro_add_check.php on line 41

Warning: move_uploaded_file(): Unable to move '/Applications/XAMPP/xamppfiles/temp/phpnol4Mo' to './gazou/broccoli.jpg' in /Applications/XAMPP/xamppfiles/htdocs/product/pro_add_check.php on line 41

下記サイトを参考にgazouフォルダの情報を確認し、共有部分の制限を読み書きに変更。

これにより無事にエラーは解決した。

$pro_gazou=$_FILE[‘gazou’]で画像情報を変数に入れて、サイズ、仮のアップロード場所と名前、画像ファイルの名前を格納された情報として$pro_gazouから取り出している。

move_upload_file(移動元,移動先);で移動させるが、画像ファイルは$pro_gazou[’tmp_name’]が示すフォルダにあり、そこにアップロードされた際に、サーバにファイル名が書き換えられるので、再度元のファイル名に直してgazouフォルダに移動させるという工程を踏んでいる。

プログラムと同じフォルダは.、一段上のフォルダは..で表す。

データベースにも画像名を追加していきたいので、下記のように対応している。

<body>
<?php

try
{
$pro_name=$_POST['name'];
$pro_price=$_POST['price'];
$pro_gazou_name=$_POST['gazou_name'];

$pro_name=htmlspecialchars($pro_name,ENT_QUOTES,'UTF-8');
$pro_price=htmlspecialchars($pro_price,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_product(name,price,gazou) VALUES (?,?,?)';
$stmt=$dbh->prepare($sql);
$data[]=$pro_name;
$data[]=$pro_price;
$data[]=$pro_gazou_name;

$stmt->execute($data);

$dbh=null;

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

}

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

商品詳細参照画面にも画像が出るようにする。

<body>
<?php

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

$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=$rec['gazou'];

$dbh=null;

if($pro_gazou_name=''){

$disp_gazou='';
}else{

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

}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>

画像の修正にも対応できるようにする。

古いファイルの削除はunlink(‘ファイル名’)で削除可能。

<body>
<?php

try
{
$pro_name=$_POST['code'];
$pro_name=$_POST['name'];
$pro_price=$_POST['price'];
$pro_gazou_name_old=$_POST['gazou_name_old'];
$pro_gazou_name=$_POST['gazou_name'];

$pro_code=htmlspecialchars($pro_code,ENT_QUOTES,'UTF-8');
$pro_name=htmlspecialchars($pro_name,ENT_QUOTES,'UTF-8');
$pro_price=htmlspecialchars($pro_price,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 = 'UPDATE mst_product SET name=?,price=?,gazou=? WHERE code=?';
$stmt=$dbh->prepare($sql);
$data[]=$pro_name;
$data[]=$pro_price;
$data[]=$pro_code;
$data[]=$pro_gazou_name;
$stmt->execute($data);

$dbh=null;

if($pro_gazou_name_old!='')
{

unlink('./gazou/'.$pro_gazou_name_old);
}

print'修正しました。<br/>';
}
catch(Exception $e)
{
print'ただいま障害によろ大変迷惑をおかけしております。';
echo $e->getMessage();
exit();

}

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

人気の記事

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.