| 2. |
商品詳細情報画面からショッピングカート画面へ |
| |
画面上の動きやデータベースの内容を確認できたら、次に処理の流れとコーディング方法を学んでいこう。商品をショッピングカートへ入れるところから説明を行なう。 |
| |
|
|
| |
1) |
cart.cfmは「ショッピングカートを見る」と「ショッピングカートに入れる」から遷移してくる |
| |
|
ショッピングカート管理画面のcart.cfmは、「ショッピングカートを見る」ボタンをクリックした場合と、「ショッピングカートに入れる」ボタンをクリックした場合の2通りの方法により遷移してくる。「ショッピングカートに入れる」場合には、商品管理番号(ItemID)のURL変数を受け取るので、そのURL変数が存在するかしないかで「ショッピングカートを見る」場合と処理を分けることができる。
cfifタグとIsDefined関数を使用してURL変数の商品管理番号(URL.ItemID)を受け取ったかどうかを判定してみる。
| cart.cfm 85行目〜91行目 |
<cfif IsDefined("URL.ItemID")>
1.ショッピングユーザーの特定
2.ショッピングカートにすでに同じ商品が入っているかを確認
2-1.ショッピングカートにすでに同じ商品が入っている場合
2-2.ショッピングカートに同じ商品が入っていない場合
</cfif> |
|
上記のcfifタグ内の処理を確認する。
|
 |
| |
1)-1. |
ショッピングしているユーザーの特定 |
| |
|
ショッピングカートを実現するためには、現在ショッピングしているユーザーを特定する必要がある。そのため、ショッピングカートを利用する際にユーザー固有のIDを割り当てることにする。ユニークなIDを割り当てる必要があるため今回はCreateUUID()関数を使用する。
得られた値をクッキーにセットし、クッキーにセットされたユニークな番号でユーザーを特定する。
クッキーに値をセットするには、cfcookieタグを使用する。すでにクッキーに値がセットされていれば、もう一度セットする必要はないので、処理を省く。
| cart.cfm 16行目〜18行目 |
<cfif Cookie.CreateUUID
is "">
<cfcookie name="CreateUUID" value="#CreateUUID()#">
</cfif> |
|
cart.cfmはdetail.cfmからURL変数の商品管理番号「URL.ItemID」を受け取る。受け取ったURL変数と、クッキーの値をSQLの条件に指定して、ショッピングカート内容を取得するクエリを記述する。
| cart.cfm 21行目〜25行目 |
<cfquery name="Select_T_Cart"
datasource="shopping">
SELECT * FROM T_Cart
WHERE CartID = '#Cookie.CreateUUID#'
AND ItemID = #URL.ItemID#
</cfquery> |
|
|
 |
| |
1)-2. |
同じ商品がすでにショッピングカートに入っているか? |
| |
|
前回、検索処理において何件検索されたのかという情報のために、RecordCountという変数を使用すると説明した。その変数を利用して、ショッピングカートの情報を取得するクエリの検索結果が0件の場合は、ショッピングカートに登録し、1件以上であれば商品の個数を追加してみよう。 |
 |
| |
1)-3. |
ショッピングカート管理テーブルのレコードを更新する |
| |
|
ショッピングカート管理テーブルの注文個数を1個追加するためのSQL文は次の通りである。
UPDATE T_Cart
SET ItemPeaces = ItemPeaces + 1
WHERE CartID = ‘#Cookie.CreateUUID#
AND ItemID = #URL.ItemID# |
|
T_Cartテーブルに登録されているデータすべてが更新されてまわないように、条件式でURL変数とクッキー変数を指定して、現在ショッピングをしているユーザのデータのみを更新するようにしている。
|
 |
| |
1)-4. |
ショッピングカート管理テーブルにレコードを追加する |
| |
|
ショッピングカート管理テーブルに新規データを追加するためのSQL文は次の通りである。
| INSERT INTO T_Cart
VALUES('#Cookie.CreateUUID#',#URL.ItemID#,1) |
|
上記のSQL文により「T_Cart」テーブルに1レコードを追加できる。フィールド(CartID,ItemID,ItemPeaces)に挿入される値がそれぞれ(‘#Cookie.CreateUUID#’,#URL.ItemID#,1)になる。
以上のポイントをまとめると次のようになる。
| cart.cfm 28行目〜39行目 |
<cfif Select_T_Cart.RecordCount
gt 0>
<cfquery name="AddPeaces_T_Cart" datasource="shopping">
UPDATE T_Cart set ItemPeaces = ItemPeaces + 1
WHERE CartID = '#Cookie.CreateUUID#'
AND ItemID = #URL.ItemID#
</cfquery>
<cfelse>
<cfquery name="AddItem_T_Cart" datasource="shopping">
INSERT INTO T_Cart VALUES('#Cookie.CreateUUID#',#URL.ItemID#,1)
</cfquery>
</cfif> |
|
|