SHOEISHA iD

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

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

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

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

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

第15回

注文確定処理の実装

 それでは、注文確定処理を実装します。サンプルソースのSTEP1フォルダの中に、先ほど<form>タグを追加したcart.phpが入っているので、メモ帳などで開いてください。70行目と71行目の間に、以下のプログラムを挿入してください。

/**-----------------------------------------------------------
 *
 * リクエスト cmd の中身が、「commit_order」であった場合の処理。
 * カート画面で「注文確定」ボタンが押された時に処理を行う。
 * 注文確定ボタンはログイン済の時のみ、表示される。
 *
 ------------------------------------------------------------*/
if( $_REQUEST["cmd"] == "commit_order" )
{
	// カート内の合計金額を計算する。
	foreach( $_SESSION["cart"] as $cart )
	{
		$total_price += $cart["price"] * $cart["num"];
	}

	// d_purchase テーブルへの挿入
	$sql = " insert into d_purchase( customer_code, purchase_date, total_price) ";
	$sql.= " values( ?, now(), ? ) ";
	$stmt = $mdb2->prepare( $sql );
	$res = $stmt->execute(
		array(
			$_SESSION["customer_code"],
			$total_price
		)
	);

	// d_purchase テーブルに挿入した ID を取得。
	$order_id = $mdb2->lastinsertid("d_purchase","order_id");

	// $_SESSION["cart"] をもう一度ループし、ループ内で詳細情報を取得して
	// から d_purchse_detail に insert する。
	foreach( $_SESSION["cart"] as $cart )
	{
		$sql = " insert into d_purchase_detail( order_id, item_code, price, num ) ";
		$sql.= " values( ?, ?, ?, ? ) " ;
		$stmt = $mdb2->prepare( $sql );
		$res = $stmt->execute( 
			array(
				$order_id,
				$cart["item_code"],
				$cart["price"],
				$cart["num"]
			)
		);
	}
	unset( $_SESSION["cart"] );
	// $is_order_done 変数は、画面上に「注文が完了しました」
	// メッセージを表示するために使用する。
	$is_order_done = 1;
}

 また、141行目あたりの

<h2>カートの中</h2>

と書かれている部分がありますが、この表記の下にプログラムを挿入し、次のように変更してください。

<?php
	if( $is_order_done == 1 )
	{
?>
            <br>
  注文が完了しました。<a href="item_list.php">商品一覧へ戻る</a>
            <br>
<?php
	}
?>

 ファイルの編集が完了したら、C:\xampp\ec以下に上書き保存しておきましょう。

 それでは、動作確認をしてみましょう。まず、購入前のデータベースの状態を確認します。http://localhost/phpmyadmin/にアクセスし、左メニューにあるデータベース[ec]をクリックします。[d_purchase]を選択した後、上のツールバーから[表示]をクリックします。

 同じ手順で、d_purchase_detailに入っているレコードの内容も確認しておいてください。

 確認したら、ECサイトにアクセスしましょう。http://localhost/ec/item_list.phpにアクセスし、商品をいくつかカート内に入れ、注文確定ボタンをクリックしてみてください。

 ログインしていない状態では、注文確定ボタンが表示されません。ユーザー登録画面から自身でIDとパスワードを登録するか、ID、パスワードいずれも「ooie」でログインしてください。

 注文が完了したら、再び先ほどと同じ手順でデータベースの中身を確認してみましょう。d_purchased_purchase_detailテーブルに無事、レコードが追加されているでしょうか?

 もしうまくいかない場合は、サンプルソースのSTEP2フォルダに実装済みのファイルが入っているので、こちらを使用して再度試してみてください。

次のページ
注文確定処理の解説

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

イベント

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

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

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

メールバックナンバー