商品検索を行って、それを次々追加して、ページを作っていきたいと思います。
具体的には、こんな感じですが、作った瞬間にページを作成したいのです。
http://putiraku.shima-soft.com/
もっと具体的には、AVERまとめのような感じです。
検索して表示された結果を次々と追加して、ページを作成したいと思っています。
前回の質問では、ページ一覧の表示から個別ページに商品情報を渡す所まで質問させていただきました。
http://q.hatena.ne.jp/1299261036
今回は、ページ一覧(テーブル表示)から、次々と商品情報を追加して、カスタムで1ページ仕上げたいと思っています。
何か比較的簡単に出来る方法ないでしょうか?ヒントでも良いですので「こんな感じで」というのあれば、お願いします。
また、サンプルみたいな形で頂けたらもっと嬉しいです。
宜しくお願いいたします。
【1】選択された商品を保持し続ける方法がいくつかあります
(1)セッション
取り扱いは簡単ですが、接続が切れるとサーバーに設定されている一定時間後にデータが消えてしまいます
次にブラウザを開いたときにも選択したものが表示されるようにしたいという場合には向きません
(2)クッキー
ある程度の期間保管できるという利点はありますが、歴史的経緯によって今でも4KBまでといったように容量制限が厳しいです
(3)データベース
現代では最もポピュラーな方法かもしれませんがデータベースについても学ばなければなりません
(4)テキストファイル
MySQLなどが気軽に使えるようになる前までは最もポピュラーな方法でした
OS固有の問題などもありデータベースよりも取り扱いが難しい面もあります
【2】セッションにitemCodeだけを蓄積していくのが楽
前回質問( http://q.hatena.ne.jp/1299261036 )で id:tdoi さんが2-A方式として挙げられた方式にセッションの利用を加えることで対応できるだけでなく、セッションは応用範囲も広いので学習の点でも一番でしょう
変更するのは詳細ページのほうだけです
<?php $itemCode = $_GET['itemCode']; session_start(); if (!isset($_SESSION['item_list'])) { $_SESSION['item_list'] = array($itemCode); } else { array_push($_SESSION['item_list'], $itemCode); } foreach($_SESSION['item_list'] as $itemcode) { $url = "http://api.rakuten.co.jp/rws/3.0/rest?developerId=[YOUR_developerID]&operation=ItemCodeSearch&version=2010-08-05&itemCode={$itemCode}" $data = file_get_contents($url); $dataから必要な情報を抜き出して表示 }
削除機能もあるといいでしょうね
<?php session_start(); if (!isset($_GET['itemCode'])) { if(isset($_GET['clear_all'])) { session_unset(); } elseif(isset($_GET['clear'])) { if($key = array_search($_GET['clear'], $_SESSION['item_list'])){ unset($_SESSION['item_list'][$key]); } } } elseif (!isset($_SESSION['item_list'])) { $_SESSION['item_list'] = array($_GET['itemCode']); } else { array_push($_SESSION['item_list'], $_GET['itemCode']); } if (count($_SESSION['item_list']) > 0) { foreach($_SESSION['item_list'] as $itemcode) { $url = "http://api.rakuten.co.jp/rws/3.0/rest?developerId=[YOUR_developerID]&operation=ItemCodeSearch&version=2010-08-05&itemCode={$itemCode}" $data = file_get_contents($url); $dataから必要な情報を抜き出して表示 echo '<a href="' . $_SERVER ['SCRIPT_NAME'] . '?clear=' . $itemCode . '">このアイテムを詳細ページから削除</a>'; } echo '<a href="' . $_SERVER ['SCRIPT_NAME'] . '?clear_all=yes">すべてのアイテムを詳細ページから削除</a>'; } else { echo 'アイテムが選択されていません'; }
http://jp2.php.net/manual/ja/ref.session.php
※動作確認はしておりませんので確認しながら実施してください
Ajaxを使うとよいと思います。
http://allabout.co.jp/gm/gc/24101/
Ajax用のjavascriptライブラリを使うとより簡単でしょう。
PHPの場合は、PEARのライブラリを使うとより簡単です。
ページングは
http://www.phpbook.jp/pear/pear_pager/
とかあります。
サンプルが思ったような形で実現出来ました。
非常に明快なサンプルで、良い勉強になりました。
ありがとうございました。
また、少しずつ勉強しながら週末に進めていきたいと思います★