人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: ぽこたん
●カテゴリ:インターネット
✍キーワード:API PHP カスタム 作成 初心者
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● うぃんど
●230ポイント

【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

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

◎質問者からの返答

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

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

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

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


2 ● あすか
●0ポイント

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


3 ● taroe
●5ポイント

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

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

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

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

ページングは

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

とかあります。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ