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

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

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.