PHPでショッピングカートを!【1.準備:商品新規追加】

PHP

前回まで、PHPを使ってログインできる会員登録機能
作っていきました。

今回から、PHPでデータベースを使った、
ショッピングカートを作って
いきたいと思います。

PHPについてよくわからないという方は、
以下の記事をお読みください。

参考記事紹介
HTMLだけではできない動的ページを作成するには?

すぐにでもショッピングカートの作り方を
説明したいのですが、ショッピングカート機能を
導入するには商品が必要です。

まずは準備段階として、商品管理のうち、
商品を新規追加する方法を説明していきます。

データベースに商品追加する

商品を管理するには、データベースに商品を
登録しなければいけません。

まずは、データベースを新規で作成し、
テーブルも新規追加します。

データベースについてよくわからないという方は、
以下の記事をお読みください。

参考記事紹介
PHPで会員登録にチャレンジ!【2.データベース作成】
PHPで会員登録にチャレンジ!【4.データベース接続】

データベースとテーブルを作成

それでは、データベース名と
テーブル名、カラム名を決めます。

データベース名:fshop
テーブル名:goods

各項目の項目名、データ型、長さは

項目カラム名データ型長さ
商品IDidINT10
商品名nameVARCHAR30
価格priceINT10

に設定します。

データベース作成は、
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]とを終了させてください。

コメント

タイトルとURLをコピーしました