как отобразить результаты поиска жанров в базе данных фильмов

У меня есть сайт, который я создаю на своем локальном хосте, используя шаблон проектирования MVC. У меня есть кнопка при нажатии, которая отображает все жанры в TheMovieDatabase, которые я получил с помощью TheMovieDatabaseAPI. По щелчку жанра я получаю данные для страницы 1 с 20 результатами. Но я не мог понять, как запросить результаты для страницы 2. Эти запросы выполняются с использованием PHP.

0

Решение

Я предполагаю, что вы используете пагинацию, я также предполагаю, что вы используете mySQL в качестве базы данных, я не уверен, какую платформу вы используете,
Вот функция, которую я использую, вы можете построить вокруг этого

 function get_movie($page = 1){
global $database_connection;
$start = 0; //Don't modify this
$limit = 10; //set this to 20 to display 20 movies per page
$start = ($page - 1)* $limit;

//get the movie from the table
$sql = "SELECT genre FROM movie_table LIMIT $start, $limit";
$result = mysqli_query($database_connection, $sql);
while ($row = mysqli_fetch_array($result)){
echo "<div>$row['genre']</div>";
}

$movie_rows = mysqli_num_rows (mysqli_query($database_connection ,"SELECT * FROM movie_table"));
$total = ceil($testimony_rows / $limit);
if (isset($page)){
echo "<div>";
echo "<ul class='pager'>";
if($page > 1) {
echo "<a href='?page=".($page - 1)."' style='float: left;' class=' w3-sand w3-btn w3-margin w3-round'>Previous</a>";
}
for($i = 1; $i <= $total; $i++) {
if($i == $page) { echo "<li class='active current'>".$i."</li>"; }

else { echo "<li><a href='?page=".$i."'>".$i."</a></li>"; }
}
if($page != $total) {
echo "<a href='?page=".($page + 1)."' class='w3-btn w3-margin w3-sand w3-round'>Next</a>";
}
echo "</ul></div>";
}
}
1

Другие решения

Вы можете использовать предел и смещение, чтобы получить результат для страницы 2.

Пример: — если вы используете конструктор запросов для получения результатов

$limit = 20;
$offset = 21;
$queryBuilder->select('d')
->from(<table name>, 'd')
->setMaxResults($limit)
->setFirstResult($offset)
->setParameter('limit', $limit)
->setParameter('offset', $offset);

Если вы используете необработанный запрос:

SELECT * FROM table LIMIT 20 OFFSET 21

В противном случае вы также можете использовать paginator

$paginator  = new \Doctrine\ORM\Tools\Pagination\Paginator($query);

$totalItems = count($paginator);
$pagesCount = ceil($totalItems / $pageSize);

// now get one page's items:
$paginator
->getQuery()
->setFirstResult($pageSize * ($currentPage-1)) // set the offset
->setMaxResults($pageSize); // set the limit

foreach ($paginator as $pageItem) {
echo "<li>" . $pageItem->getName() . "</li>";
}
0

По вопросам рекламы [email protected]