SHOEISHA iD

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

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

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

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

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

第14回

カート画面の実装(重複した商品の合算)

 これまでの実装で一通り動作するようになりましたが、まだ改善すべき箇所が残っています。同じ商品を2回、カートに追加してみてください。次のように、複数行に分かれてカートに追加されるはずです。

同じ商品を2回追加するとカート内に別々に追加される
同じ商品を2回追加するとカート内に別々に追加される

 一般的に、同一商品をカートに追加した場合は数量を合算し同一行で表示することが多いため、今回のECサイトでも合算する処理を入れましょう。サンプルソースのSTEP3フォルダを開き、cart.phpC:\xampp\htdocs\ec\フォルダ以下に上書き保存してください。同一商品をカートに追加すると、数量が合算されることを確認しましょう。

数量が合算されてカート内に表示される
数量が合算されてカート内に表示される

 今回追加したのは、次の2カ所です。

21行目~30行目
$is_already_exists  = 0;
for( $i = 0 ; $i < count( $_SESSION["cart"] ); $i++ )
{
	if( $_SESSION["cart"][$i]["item_code"] == $_REQUEST["code"] )
	{
		// 追加する商品がカートに既に存在するならば、数量を合算。
		$_SESSION["cart"][$i]["num"] = $_SESSION["cart"][$i]["num"] + $_REQUEST["num"];
		$is_already_exists = 1;
	}
}
32行目のif文
if( $is_already_exists == 0 )

 21行目には、次の変数が登場しています。

$is_already_exists  = 0;

 カート内に既に同一商品が存在すればこの変数は1になり、逆に存在しなければこの変数は0のままです。22行目以降のfor文でカート内の全商品をチェックし、これから追加しようとしている商品の商品コードがカート内に存在すれば、カート内の商品の数量を合算し、$is_already_exists1に書き換えています。24行目のif文に入らなければ$is_already_exists0のままですから、32行目のif文に入り、新たな商品がカートに追加されます。

まとめ

 今回は、カート画面を実装しました。プログラムがかなり複雑になってきましたが、今回の難易度のプログラムがどうにか読み書きできるようになれば、実際のサイト制作でも十分生かせるスキルが身につくはずです。理解を容易にするために、PHPファイルそのものを紙に印刷してみるのも1つの方法です。印刷した紙を見て、if文やforループで囲まれた部分を、ペンで囲ってみましょう。プログラム全体の流れが分かりやすくなるはずです。

 それでは、今回の技術要素のまとめです。

今回のまとめ
  • <input type="hidden"…と書かれたタグは一般的にhiddenタグと呼ばれるもので、目に見えないテキストボックスのようなもの。入力フォームとして送信できる。
  • isset命令はある変数が存在するかどうかを判定するために用いる。
  • unset命令は変数を破棄する。配列の番号が歯抜けになることに注意する。
  • array_push命令は、配列に要素を追加する。
  • forループとcount命令を組み合わせることで、forループで配列をループすることもできる。

 次回はいよいよ、商品注文機能を実装します。プログラムをより読みやすくするテクニックも紹介する予定です。

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
プログラミング未経験から始めるPHP入門連載記事一覧

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4585 2009/11/25 14:00

イベント

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

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

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

メールバックナンバー