2017-03-23 8 views
1

Codeigniter 3を使用して、書籍の詳細、つまりアイテムID、アイテム画像およびのアイテムタイトルからなるHTMLテーブルを表示したいと考えています。 Googleブックスを使用してアイテム画像を作成したいと思います。Google BooksのサムネイルをCodeigniterで表示

これまでのところ、私のコードは、MySQLデータベースからすべてのデータを取得し、単純なHTMLテーブルに表示できるという意味で、動作します。しかし、Googleブックスの対応する画像をHTML表の画像フィールドに取り込む方法がわかりません。

私のデータベースからISBNを取得していますが、これを使用してGoogleブックスのURLを検索できますか?

あなたが見るように私はforeachを作成しようとしましたが、動作しませんので、コメントアウトしました。 foreachで受信したエラーメッセージは次のとおりです。

メッセージ:未定義のインデックス:行の項目23

私の現在のコードは以下の通りです。

モデル

class Items_model extends CI_Model { 
    public function itemList() { 
     $query = $this->db->get('item', 10); 
     return $query->result_array(); 
    } 
} 

コントローラ

class Items extends CI_Controller { 

    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->model('items_model'); 
     $this->load->database(); 
    } 

    public function index() { 
     $data['items'] = $this->items_model->itemList();  
     //foreach ($data['items'] as $row) 
     //{ 
     // $page = //file_get_contents("https://www.googleapis.com/books/v1/volumes?q=isbn:".$row['item_isbn']); 
     // $bookData = json_decode($page, true); 
     // $data['BookImage'] = '<img src="'.$bookData['items'][0]['volumeInfo']['imageLinks']['thumbnail'].'" alt="Cover">'; <-- line 23 
     //} 
     $this->load->view('item_view', $data); 
    } 
} 

ビュー

<table> 
    <tr> 
     <td><strong>ID</strong></td> 
     <td><strong>ISBN</strong></td> 
     <td><strong>Image</strong></td> 
     <td><strong>Title</strong></td> 
    </tr> 

<?php foreach ($items as $item): ?> 
     <tr> 
      <td><?php echo $item['item_id']; ?></td>   
      <td><?php echo $item['item_isbn'] ?></td>  
      <td><?php // what goes here? ?></td> 
      <td><?php echo $item['item_title']; ?></td> 
     </tr> 
<?php endforeach; ?> 
</table> 

すべてのヘルプは高く評価されます。

答えて

1

書籍のIDを取得するには、Googlebooks APIを使用する必要があります。

foreach ($items as $item): 
$data = @file_get_contents('https://www.googleapis.com/books/v1/volumes?q=isbn+".$yourISBN."'); 
$data = json_decode($data); 
$data = $data->items[0]->id; 
// Next you have to insert $data(the item_id) inside of one of the 
followings links: 
// "smallThumbnail": "https://books.google.com/books?id=zyTCAlFPjgYC&printsec=frontcover&img=1&zoom=5&edge=curl&source=gbs_api", 
// "thumbnail": "https://books.google.com/books?id=zyTCAlFPjgYC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api", 
// "small": "https://books.google.com/books?id=zyTCAlFPjgYC&printsec=frontcover&img=1&zoom=2&edge=curl&source=gbs_api", 
// "medium": "https://books.google.com/books?id=zyTCAlFPjgYC&printsec=frontcover&img=1&zoom=3&edge=curl&source=gbs_api", 
// "large": "https://books.google.com/books?id=zyTCAlFPjgYC&printsec=frontcover&img=1&zoom=4&edge=curl&source=gbs_api", 
// "extraLarge": "https://books.google.com/books?id=zyTCAlFPjgYC&printsec=frontcover&img=1&zoom=6&edge=curl&source=gbs_api" 

//Example: 
$thumbnail = "https://books.google.com/books?id=".$data."&printsec=frontcover&img=1&zoom=5&edge=curl&source=gbs_api"; 
    endforeach; 

そして、あなたはあなたのサムネイルを持っている:

まず、この方法でリクエストを行う必要があります。

あなたのIDは "zyTCAlFPjgYC"の形式である必要があります。 はtotor59 @doc

+0

感謝を見て持っていますが、私は今、次のエラー '未定義のインデックス受け取る:id.''のvar_dump($データ) '戻っ' NULL' –

+0

は、私はあなたに間違ったインデックスを与えた私の最後の編集を参照してください。 idのために – totor59