У меня возникли проблемы с использованием API Google Книги
Я неопытен в работе с JSON.
Моя форма:
<form action="action.php" method="POST"> <div class="form-group"> <div class="campos"> <label> Search </label> <input type="text" name="search" style="margin-right: 10px; width:250px; float:left" class="input-field" placeholder="Title, Author..." /> <button type="submit" id="search" class="btn btn-default">Search</button> </div> </div>
Мои действия:
$var1 = "https://www.googleapis.com/books/v1/volumes?q="; $var2 = urlencode($_POST['search']); $str = str_replace(" ", "+", $var2); $page = $var1.$str; header ("location:$page"); $data = file_get_contents($page); $data = json_decode($page, true);
Так что запуск этого кода мне вернет один json-файл, содержащий что-то вроде:
{ "kind": "books#volumes", "totalItems": 584, "items": [ { "kind": "books#volume", "id": "NkHwo2hKW6YC", "etag": "FNozDEeE+zY", "selfLink": "https://www.googleapis.com/books/v1/volumes/NkHwo2hKW6YC", "volumeInfo": { "title": "viagem ao redor da lua", "authors": [ "JULIO VERNE" ], "publisher": "Hemus", "description": "Description of book", "industryIdentifiers": [ { "type": "ISBN_10", "identifier": "8528901882" }, { "type": "ISBN_13", "identifier": "9788528901887" } ], "readingModes": { "text": false, "image": true }, "pageCount": 192, "printType": "BOOK", "averageRating": 3.0, "ratingsCount": 4, "contentVersion": "1.1.1.0.preview.1", "imageLinks": { "smallThumbnail": "http://bks6.books.google.com.br/books?id=NkHwo2hKW6YC&printsec=frontcover&img=1&zoom=5&edge=curl&source=gbs_api", "thumbnail": "http://bks6.books.google.com.br/books?id=NkHwo2hKW6YC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api" }, "language": "pt", "previewLink": "http://books.google.com.br/books?id=NkHwo2hKW6YC&printsec=frontcover&dq=Julio+verne&hl=&cd=1&source=gbs_api", "infoLink": "http://books.google.com.br/books?id=NkHwo2hKW6YC&dq=Julio+verne&hl=&source=gbs_api", "canonicalVolumeLink": "http://books.google.com.br/books/about/viagem_ao_redor_da_lua.html?hl=&id=NkHwo2hKW6YC" }, "saleInfo": { "country": "BR", "saleability": "NOT_FOR_SALE", "isEbook": false }, "accessInfo": { "country": "BR", "viewability": "PARTIAL", "embeddable": true, "publicDomain": false, "textToSpeechPermission": "ALLOWED", "epub": { "isAvailable": false }, "pdf": { "isAvailable": false }, "webReaderLink": "http://books.google.com.br/books/reader?id=NkHwo2hKW6YC&hl=&printsec=frontcover&output=reader&source=gbs_api", "accessViewStatus": "SAMPLE", "quoteSharingAllowed": false }, "searchInfo": { "textSnippet": "Em uma época que não se conhecia a tecnologia, Verne consegue prever em forma de aventura, uma viagem pelo espaço até a Lua." } }, ] }
Мне нужно показать некоторую часть этой информации по php.
Ну, вы эль, получая информацию JSON, так что это сложная часть.
Чтобы распечатать данные через php, попробуйте следующее:
$page = file_get_contents($page); $data = json_decode($page, true); echo "Title = " . $data['items'][0]['volumeInfo']['title']; echo "Authors = " . @implode(",", $data['items'][0]['volumeInfo']['authors']); echo "Pagecount = " . $data['items'][0]['volumeInfo']['pageCount'];
Взгляните на клиентскую библиотеку API Google Книги для PHP https://developers.google.com/books/docs/v1/libraries (у них есть несколько примеров.) То, что вы пытаетесь сделать, не будет работать в по меньшей мере две причины:
header("Location: $page");
перенаправляет; он не захватывает содержимое страницы. Изменить: аутентифицирующая часть неверна, если вам не нужно открывать или создавать собственные «книжные полки». Поэтому вы можете попробовать:
$data = file_get_contents($page); $data = json_decode($data, true); $item = $data->items;