Разбивка на страницы и цикл по общему количеству страниц

#php #themoviedb-api

#php #themoviedb-api

Вопрос:

Я создаю небольшую базу данных фильмов для изучения php. Я вызываю API из базы данных Movie:

$url = "https://api.themoviedb.org/3/search/movie?api_key=". $apiKey . "amp;" . $language . "amp;query=". $searchTerm ."amp;". $sortBy .""; // path to your JSON file

Результаты для поискового запроса brother выглядят следующим образом:

 object(stdClass)#2 (4) {
  ["page"]=>
  int(1)
  ["total_results"]=>
  int(1202)
  ["total_pages"]=>
  int(61)
  ["results"]=>
  array(20) {
    [0]=>
    object(stdClass)#3 (14) {
      ["popularity"]=>
      float(18.305)
      ["vote_count"]=>
      int(219)
      ["video"]=>
      bool(false)
      ["poster_path"]=>
      string(32) "/frhzQ5JJ29R3kXuVq3CRYQSczpn.jpg"
      ["id"]=>
      int(327)
      ["adult"]=>
      bool(false)
      ["backdrop_path"]=>
      string(32) "/cL1VX6WllejQQhGTUGGWHW25yor.jpg"
      ["original_language"]=>
      string(2) "en"
      ["original_title"]=>
      string(7) "Brother"
      ["genre_ids"]=>
      array(3) {
        [0]=>
        int(80)
        [1]=>
        int(18)
        [2]=>
        int(53)
      }
      ["title"]=>
      string(7) "Brother"
      ["vote_average"]=>
      int(7)
      ["overview"]=>
      string(613) "Ausgestoßen durch die Bruderschaft seines Yakuza-Clans wird der eiskalte Killer Yamamoto gezwungen, Tokio Richtung Los Angeles zu verlassen. Dort angekommen findet er sich selbst sehr schnell in der alten Routine seines gewalttätigen Tokio Leben wieder. In kürzester Zeit formt er eine neue skrupellos operierende Bruderschaft um sich herum. Macht, Mädchen und Geld liegen im zu Füssen. Aber das ist dem ehemaligen Yakuza Killer Yamamoto nicht genug. Er will alles! Er startet einen blutigen und erbitterten Kampf gegen die Mafia und muss wieder einmal feststellen, dass er von seinen Brüdern verraten wird."
  

Результаты показывают, что я являюсь одной страницей 1 из 61 с общими результатами 1202.

Я знаю, что мне нужно выполнить цикл total_pages , но я не знаю, как построить этот запрос вокруг вызова API.

Я благодарен за каждый намек.

Ответ №1:

Из их документации вы можете видеть, что существует необязательный параметр «страница». Таким образом, вы можете отправлять следующие запросы для каждой страницы, например:

$url = «https://api.themoviedb.org/3/search/movie?api_key =». $apiKey . «amp;» . $language . «amp;query=». $searchTerm .»amp;». $sortBy . «amp;page=» . «$PageNumber»;

Комментарии:

1. Спасибо. Но как настроить foreach? Это то, что я не понимаю правильно.

2. Вы уверены, что будете использовать foreach? Может быть два подхода. Сначала нужно отобразить результаты со страницы 1 в таблице на вашем сайте, а когда пользователь нажимает на страницу 2, отправить другой запрос к этому API для получения результатов со страницы 2 и так далее. Другой способ — создать цикл «for ($i = 1; $i <= $total_pages; $i ) {…} «, и внутри тела вы можете выполнять запросы к API, где $i будет номером страницы.

3. Хорошо, я попробую это позже. Хорошая идея сохранить нежелательные запросы. 🙂