PHP初心者で楽天APIを触っています。

商品検索を行って、それを次々追加して、ページを作っていきたいと思います。
具体的には、こんな感じですが、作った瞬間にページを作成したいのです。
http://putiraku.shima-soft.com/
もっと具体的には、AVERまとめのような感じです。
検索して表示された結果を次々と追加して、ページを作成したいと思っています。

前回の質問では、ページ一覧の表示から個別ページに商品情報を渡す所まで質問させていただきました。
http://q.hatena.ne.jp/1299261036
今回は、ページ一覧(テーブル表示)から、次々と商品情報を追加して、カスタムで1ページ仕上げたいと思っています。
何か比較的簡単に出来る方法ないでしょうか?ヒントでも良いですので「こんな感じで」というのあれば、お願いします。
また、サンプルみたいな形で頂けたらもっと嬉しいです。
宜しくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2011/04/02 16:23:26
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

ポイント230pt

【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

※動作確認はしておりませんので確認しながら実施してください

id:hiroponta

サンプルが思ったような形で実現出来ました。

非常に明快なサンプルで、良い勉強になりました。

ありがとうございました。

また、少しずつ勉強しながら週末に進めていきたいと思います★

2011/04/02 16:21:58
id:asuka645 No.2

回答回数856ベストアンサー獲得回数97

検索結果を、表示するHTMLファイルに追加していけばいいでしょう。

id:taroe No.3

回答回数1099ベストアンサー獲得回数132

ポイント5pt

Ajaxを使うとよいと思います。

http://allabout.co.jp/gm/gc/24101/

Ajax用のjavascriptライブラリを使うとより簡単でしょう。

PHPの場合は、PEARのライブラリを使うとより簡単です。

ページングは

http://www.phpbook.jp/pear/pear_pager/

とかあります。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません