@alexsteadfast
I am noob

Как выводить определённое кол-во. записей из бд на страницу и при привышении этого кол-ва. выводить записи на следующую страницу?

У меня на странице есть вывод записей из бд. Внизу есть пагинация. Мне необходимо, чтобы на одной странице , выводило по 3 записи. На данный момент на каждой странице выводятся все записи и они повторяются. Как мне объединить механизм пагинации с механизмом вывода элементов из базы на страницу?

//Тут в переменную я получаю общее кол-во строк в базе.
$countString = mysqli_stmt_num_rows($stmt);

//.................................... Pagination -->
  /* Входные параметры */
  $count_pages = $countString;
  $active = $_GET['page'];
  if($_GET['page']==null) $active = 1;
  $count_show_pages = 3;
  $url = "/index.php";
  $url_page = "/index.php?page=";
  if ($count_pages > 1) { // Всё это только если количество страниц больше 1
    $left = $active - 1;
    $right = $count_pages - $active;
    if ($left < floor($count_show_pages / 2)) $start = 1;
    else $start = $active - floor($count_show_pages / 2);
    $end = $start + $count_show_pages - 1;
    if ($end > $count_pages) {
      $start -= ($end - $count_pages);
      $end = $count_pages;
      if ($start < 1) $start = 1;
    }
?>
  <!-- Дальше идёт вывод Pagination -->
  <div id="pagination">
    <span>Страницы: </span>
    <?php if ($active != 1) { ?>
      <a href="<?=$url?>" title="Первая страница">&lt;&lt;&lt;</a>
      <a href="<?php if ($active == 2) { ?><?=$url?><?php } else { ?><?=$url_page.($active - 1)?><?php } ?>" title="Предыдущая страница">&lt;</a>
    <?php } ?>
    <?php for ($i = $start; $i <= $end; $i++) { ?>
      <?php if ($i == $active) { ?><span><?=$i?></span><?php } else { ?><a href="<?php if ($i == 1) { ?><?=$url?><?php } else { ?><?=$url_page.$i?><?php } ?>"><?=$i?></a><?php } ?>
    <?php } ?>
    <?php if ($active != $count_pages) { ?>
      <a href="<?=$url_page.($active + 1)?>" title="Следующая страница">&gt;</a>
      <a href="<?=$url_page.$count_pages?>" title="Последняя страница">&gt;&gt;&gt;</a>
    <?php } ?>
  </div>
<?php } ?>
<!-- END Pagination -->

//Вывод на страницу элементов:

if (mysqli_multi_query($link, $query)) {
    do {
        /* получаем первый результирующий набор */
        if ($result = mysqli_store_result($link)) {
			
            while ($row = mysqli_fetch_row($result)) {
				// тут выводит столбцы из таблицы
				?> <div style="border-style:groove; width:300px;"> <?
                printf("<div style='float:left'> %s </div>", $row[0]);
				printf("<div style='float:right'> %s </div>", $row[4]);
				printf("<br>"); 
				printf("<br>"); 
				printf("<br>"); 
				 printf("%s", $row[1]);

				 printf("<br>");
				 ?></div> <?  
            }
            mysqli_free_result($result);
        }
        /* печатаем разделитель */
        if (mysqli_more_results($link)) {
            printf("-----------------\n");
        }
    } while (mysqli_next_result($link));
}
  • Вопрос задан
  • 444 просмотра
Решения вопроса 1
leni_m
@leni_m
ЧупаКобрус
$offset = ($active - 1) * 3;
и к Mysql запросу добавляем 'LIMIT 3 OFFSET '.$offset // что значит выбираем 3 записи 
//  пропуская $offset записей
т.е. дляя 1 страницы возьмутся 1-3 записи, для 2-ой 4-6 записи и т.д.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
29 мар. 2024, в 10:00
10000 руб./за проект
29 мар. 2024, в 09:59
750 руб./в час
29 мар. 2024, в 09:55
50000 руб./за проект