前回まで、PHPを使ってログインできる会員登録機能を
作っていきました。
今回から、PHPでデータベースを使った、
ショッピングカートを作って
いきたいと思います。
PHPについてよくわからないという方は、
以下の記事をお読みください。
すぐにでもショッピングカートの作り方を
説明したいのですが、ショッピングカート機能を
導入するには商品が必要です。
まずは準備段階として、商品管理のうち、
商品を新規追加する方法を説明していきます。

データベースに商品追加する
商品を管理するには、データベースに商品を
登録しなければいけません。
まずは、データベースを新規で作成し、
テーブルも新規追加します。
データベースについてよくわからないという方は、
以下の記事をお読みください。
データベースとテーブルを作成
それでは、データベース名と
テーブル名、カラム名を決めます。
データベース名:fshop
テーブル名:goods
各項目の項目名、データ型、長さは
項目 | カラム名 | データ型 | 長さ |
---|---|---|---|
商品ID | id | INT | 10 |
商品名 | name | VARCHAR | 30 |
価格 | price | INT | 10 |
に設定します。
データベース作成は、
PHPで会員登録にチャレンジ!【2.データベース作成】
で説明しましたが、復習の意味を込めて簡単に説明します。
XAMPPのコントロールパネルを起動し、
[Apache]列の[Start]と[MySQL]列の[Start]
をクリックし[Apache]と[MySQL]とを起動させます。

ウェブブラウザに、
「http://localhost/phpmyadmin」と入力すると
「phpMyAdmin」画面が表示されますので、
[データベース]をクリックします。
データベースを作成するの下に[fshop]と入力し
[作成]をクリックするとデータベースが新規作成されます。

[テーブルを作成]の下に名前[goods]カラム数[3]と
入力し、[実行]をクリックすると項目を入力する画面が表示されます。

テーブルの各項目を入力します。

商品IDは[A_I]にチェックを入れ[保存する]をクリック
することでテーブルが作成できました。

データベースのテーブルの作成が終わりましたら、
XAMPPのコントロールパネルで
[Apache]列の[Stop]と[MySQL]列の[Stop]
をクリックし[Apache]と[MySQL]とを終了させてください。
商品新規追加画面
ファイル名:goods_add.php
<記述例>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>商品新規追加</title>
</head>
<body>
<main>
<section>
<h4>商品追加</h4>
<form method="post" action="goods_add_chk.php" style="background: honeydew; margin:10px; padding:10px; border:6px solid teal;box-shadow: 10px 10px 6px -6px darkslategray; display: inline-block; line-height: 200%;">
商品を新規登録します。<br>
商品名:<input type="text" name="name"><br>
価格(半角数字):<input type="text" name="price"><br>
<input type="button" onclick="history.back()" value="戻る">
<input type="submit" value="OK">
</form>
</section>
</main>
</body>
</html>
商品追加チェック
ファイル名:goods_add_chk.php
<記述例>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>商品追加チェック</title>
</head>
<body>
<main>
<section>
<?php
$name=$_POST['name'];
$price=$_POST['price'];
$name=htmlspecialchars($name);
$price=htmlspecialchars($price);
$flag1=true;
if($name=='')
{
print '商品名が入力されていません。<br>';
$flag1=false;
}
else
{
print '商品名:'.$name.'<br>';
}
if(preg_match('/^[0-9]+$/',$price)==0)
{
print '価格を正確に入力してください。(半角数字)<br>';
$flag1=false;
}
else
{
print ' 価格:'.$price.' 円 <br>';
}
if($flag1==false)
{
print '<form>';
print '<input type="button" onclick="history.back()" value="戻る">';
print '</form>';
}
else
{
print ' 上記商品を新規追加します。<br>';
print '<form method="post" action="goods_add_end.php">';
print '<input type="hidden" name="name" value="'.$name.'">';
print '<input type="hidden" name="price" value="'.$price.'">';
print '<br>';
print '<input type="button" onclick="history.back()" value="戻る">';
print '<input type="submit" value="OK">';
print '</form>';
}
?>
</section>
</main>
</body>
</html>
30行目のif文の条件式に書かれてあるpreg_match 命令で
正規表現を使い、半角数字を判定しています。
例:preg_match(‘/^[0-9]+$/’,$price)
商品追加完了画面
ファイル名:goods_add_end.php
<記述例>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>商品追加完了</title>
</head>
<body>
<main>
<section>
<?php
$name=$_POST['name'];
$price=$_POST['price'];
$name=htmlspecialchars($name);
$price=htmlspecialchars($price);
try
{
$dsn='mysql:dbname=fshop;host=localhost';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password);
$dbh->query('SET NAMES utf8');
$sql='INSERT INTO goods(name,price) VALUES (?,?)';
$stmt=$dbh->prepare($sql);
$data[]=$name;
$data[]=$price;
$stmt->execute($data);
$dbh=null;
print '商品名:'.$name.' ';
print '価格:'.$price.'を追加しました。<br>';
}
catch(Exception $e)
{
print ' ただいま障害により大変ご迷惑をおかけしております。';
exit();
}
?>
<a href="goods_list.php"> 戻る </a>
</section>
</main>
</body>
</html>
実際に追加してみよう
データベース:fshopと、テーブル:goods を
作成し、XAMPPをインストールしてある前提で、
実際に登録するのかを確認してみましょう。
ここに掲載した、
「goods_add.php」と「goods_add_chk.php」と
「goods_add_end.php」とをUTF-8ファイルとして保存します。
それから、新規追加を連続で行うときに
毎回「goods_add.php」を実行するのは不便なので
「goods_list.php」を簡易的に作成しました。
ファイル名:goods_list.php
<記述例>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>商品一覧</title>
</head>
<body>
<main>
<section>
<?php
try
{
$dsn='mysql:dbname=fshop;host=localhost';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password);
$dbh->query('SET NAMES utf8');
$sql='SELECT id,name,price FROM goods WHERE 1';
$stmt=$dbh->prepare($sql);
$stmt->execute();
$dbh=null;
print '商品一覧<br><br>';
while(true)
{
$rec=$stmt->fetch(PDO::FETCH_ASSOC);
if($rec==false)
{
break;
}
print '商品ID:'.$rec['id'].' ';
print '商品名:'.$rec['name'].' ';
print '価格:'.$rec['price'].' 円<br>';
}
}
catch(Exception $e)
{
print ' ただいま障害により大変ご迷惑をおかけしております。';
exit();
}
?>
<br>
<a href="goods_add.php"> 新規追加 </a><br>
</section>
</main>
</body>
</html>
上記記述例もUTF-8ファイルとして保存します。
ここでは、XAMPPのドキュメントルート(画像ではphpフォルダ)
の中にfshopフォルダ、
その中にgoodsフォルダを作成します。

そのgoodsフォルダに入れてください。
XAMPPのコントロールパネルを起動し、
[Apache]列の[Start]と[MySQL]列の[Start]
をクリックし[Apache]と[MySQL]とを起動させてください。

ドキュメントルート(DocumentRoot)以下のフォルダに
4つのファイルをコピーし、「goods_add.php」を
実行し、登録してみてください。

今回例として入力する10商品です。
商品名 | 価格 |
---|---|
マアジ | 500 |
ブリ | 650 |
ヒラメ | 1500 |
カサゴ | 1100 |
カツオ | 500 |
クロマグロ | 3000 |
マサバ | 400 |
サケ | 700 |
サンマ | 450 |
マダイ | 1000 |
商品追加画面で、商品名と価格を入力し、[OK]を
クリックします。

商品名と価格とに入力ミスがないかを確認し
[OK]をクリックします。

商品を1つ追加できましたので[戻る]をクリックします。

続けて登録する場合、[新規追加]をクリックします。

後はこれを繰り返し、10商品登録してください。

データベースのテーブルに保存されているかを
phpMyAdminを使って確認してみます。
ウェブブラウザに、
「http://localhost/phpmyadmin」と入力し
[Enter]キー入力します。

「phpMyAdmin」画面が表示されますので、
[データベース]をクリックします。

データベース一覧から、「fshop」を
クリックします。
テーブルの「goods」をクリックします。
先ほど入力したデータが表示されていれば、
登録されているということです。

終わりましたら、XAMPPのコントロールパネルで
[Apache]列の[Stop]と[MySQL]列の[Stop]
をクリックし[Apache]と[MySQL]とを終了させてください。

コメント