SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

プログラミング未経験から始めるPHP入門

ECサイトの注文完了機能を作成しよう!
プログラミング未経験から始めるPHP入門~応用編(8)

第15回

今回の作成範囲

 今回の作成範囲を説明します。まず、第8回C:\xampp\htdocs\ec_htmlフォルダを作成していない方は内容に沿って作成し、http://localhost/ec_html/item_list.phpにアクセスしてください。その後、適当な画像を選択し、[カートに入れる]をクリックすると、カート画面が表示されます。

 前回の記事では、このカート画面での商品表示部分を作成しました。今回は、このECサイトの最後の機能である注文確定処理を作成します。具体的には[注文確定]をクリックした時に、カートの中の商品をデータベースに移し変えるという処理です。

 本来のECサイトでは決済機能も必要となりますが、この連載ではデータベースに登録する機能までを解説します。決済機能が必要な場合、特にクレジット決済が必要な場合は、決済代行会社のサービスを用いることがしばしばあります。必要に応じて、Googleなどで「決済代行」等のキーワードで検索してみてください。

送信フォームの作成

 まず、C:\xampp\htdocs\ecフォルダ内にあるcart.phpをメモ帳などで開いてください。[注文確定ボタン]が次のように記述されているはずです。

<input type="submit" class="fix" value="注文確定"/>

 上記のように注文確定ボタンが定義されていますが、このままではクリック時の送信先画面が定義されていないので、上記の部分を次のように<form>タグで囲みましょう(今回はcart.php、すなわち同一画面に対して送信するものとします)。

<form name="cart_form" action="cart.php" method="post">
<input type="hidden" name="cmd" value="commit_order"/>
<input type="submit" class="fix" value="注文確定"/>
</form>

 hiddenタグの情報は、PHPが[注文確定ボタン]がクリックされたことを認識するために用います。

 これでボタンをクリックできるようになりましたが、他にも問題があるので対処しておきましょう。現状では、ログインしていないユーザーでも注文確定ボタンがクリックできてしまいます。また、カートに商品が入っていない場合も、同じくクリックできてしまいます(未ログインでも購入可能なECサイトもありますが、今回はログイン情報を元に購入者を識別する目的で、未ログインでは購入できないルールとします)。

 上記の<form>~</form>までの部分に、次のようにif文を用いて注文確定ボタンの表示・非表示を切り替えるPHPのコードを付加します。

<?php
	if( $_SESSION["customer_code"] != "" && count( $_SESSION["cart"] ) > 0 )
	{
?>
<form name="cart_form" action="cart.php" method="post">
<input type="hidden" name="cmd" value="commit_order"/>
<input type="submit" class="fix" value="注文確定"/>
</form>
<?php
	}
?>

 count命令は、配列の要素数を調べるための命令です。

if(count( $_SESSION["cart"] ) > 0 )

 と記述することで、$_SESSION["cart"]配列の要素数が0より大きい、すなわち、カートに商品が入っている場合のみ、if文に入ります。

 実装できたら、未ログイン、およびカートが空の状態で注文確定ボタンが表示されないことを確認しましょう。

注文確定処理(テーブル構造の理解)

 次に、データベース処理の実装です。まず、注文情報を格納するテーブルが、どのような構造だったかを思い出してみましょう。設計に関して学習をした第8回の2ページ目を開き、「購入履歴テーブル(d_purchase)購入履歴詳細テーブル(d_purchase_detail)」の見出し部分を確認してください。

 注文情報は、このd_purchaseおよびd_purchase_detailの2つのテーブルに格納します。d_purchaseには注文情報のサマリー、d_purchase_detailには注文情報の詳細を格納します。2つのテーブルが互いに関連し合う構造は今回が初めてなので、よく目を通しておきましょう。

次のページ
注文確定処理の実装

この記事は参考になりましたか?

プログラミング未経験から始めるPHP入門連載記事一覧

もっと読む

この記事の著者

大家 正登(オオイエ マサト)

デジタルハリウッド『PHP 講座』講師。学生時代、スペイン語を専攻していたものの何故かプログラム言語に心が傾き、近所のフリープログラマーに弟子入り修行。その後中堅 SIer に 3 年間所属し、現在はフリーエンジニア。仕事の傍らジャズを演奏し、コントラバス 2 台と同居中。(ITエンジニア・大家正登のWeb...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4684 2009/12/16 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー