商品一覧画面(実装)
サンプルソースのoriginalフォルダの中にあるitem_list.phpを開いてください。これは第11回で実装した、ブラッシュアップ後のプログラムです。
このプログラムの詳細画面へのリンク先URL(114行目)に、商品コードのGETリクエストを追加してみましょう。
動作を確認する場合は、C:\xampp\htdocs\ec\item_list.phpとして上書き保存し、商品一覧画面にアクセスしてください。現状はまだ詳細画面を実装していないため、ブラウザはエラー画面を表示しますが、遷移先のURLに商品コードが付加されていることを確認しましょう。
では、以下に解答例の1つを紹介します。114行目に
<a href="item_detail.php">
というタグがありますが、これが詳細画面へのリンクの部分です。この部分を次のように書き換え、商品コードを付加するよう動作させます。
<a href="item_detail.php?code=<?php print(htmlspecialchars( $item["item_code"] ) ); ?>">
HTMLのコード内にPHPタグが部分的に記述されているため、どのように商品コードが表示されるかが分かりにくいかもしれません。実際に画面にアクセスして、ソースを表示し、生成されたHTMLを確認してみましょう。
リコーダーは
<a href="item_detail.php5?code=1004">
となっており、チェロは
<a href="item_detail.php5?code=2002">
となっているはずです。これで商品コードの送信ができるようになりました。なお、回答プログラムを、サンプルソースのSTEP1フォルダの中に格納しておきました。自分の記述したコードと見比べてみてください。
商品詳細画面(設計)
次に、詳細画面の処理の流れを考えてみましょう。リクエストの中身は、$_REQUESTという特殊な変数に格納されていることを思い出してください。この前提で、次のように処理を組み立てます。
- 処理(1):
$_REQUEST["code"]に格納されている商品コードを元に、商品情報をデータベースより取得。 - 処理(2):取得した商品情報を画面に表示。
それでは、実装に入ります。
商品詳細画面(実装)
サンプルソースのoriginalフォルダの中にあるitem_detail.phpを開き、「以下の$sql変数に適切なSELECT文を記述し、一覧画面から画面遷移できるようにして下さい。」というコメント文がある箇所を探してください。この箇所の$sqlに、SELECT文を記述してみましょう。
動作を確認する場合は、C:\xampp\htdocs\ec\item_detail.phpとして上書き保存し、商品詳細画面にアクセスしてください。
では、解答です。$sql内に格納されるSQL文は、次のようになります。
$sql = "select * from m_items where item_code = ? ";
item_codeを特定する?(クエスチョンマーク)の箇所には、その下の文で、一覧画面から引き継がれた$_REQUEST["code"]を指定しています。
$res = $stmt->execute( array( $_REQUEST["code"] ) );
なお、回答プログラムはサンプルソースのSTEP2フォルダの中にあります。
まとめ
今回は、詳細画面を実装しました。第5回の入力フォームで学習した、GET方式のリクエストはHTMLのリンク部分に直接記述できます。このようなリクエストの使い方は、amazonなどのECサイトやmixiなどのSNSサイトでも多く使われているので、普段よく使うサイトのURLにも注目してみると、新しい発見があるかもしれません。それでは、今回のまとめです。
- 2つの画面を連動させるための1つの方法として、遷移先の画面の URL に GET 方式のリクエストを付加する方法がある。
- GET 方式のリクエストはリンク先の URL に直接記述することができ、入力フォームを介さなくても送信できる。
次回はいよいよ、ECサイトには欠かせないショッピングカートを実装します。段々と難しくなってきましたが、ショッピングカートを実装すればもう後一息です。
