Как реализовать пагинацию в скрипте?

Доброго времени суток. Суть вопроса в том что у меня не получается реализовать пагинацию в скрипте. Есть скрипт который выводит либо все статьи на странице из таблицы news (по адрессу /?do=news) либо только принадлежащие конкретной категории при переходе допустим на (/?do=news&categoryId=5)
Прочитал много статей но так и не смог интегрировать в этот скрипт. Потому прошу у вас помощи. Собственно сама функция

public static function getCategory( $numRows=1000000, $categoryId=null ) {
	      
    $conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
    $categoryClause = $categoryId ? "WHERE categoryId = :categoryId" : "";
    $sql = "SELECT *, UNIX_TIMESTAMP(publicationDate) AS publicationDate
            FROM news $categoryClause
            ORDER BY id DESC LIMIT :numRows";

    $st = $conn->prepare( $sql );
    $st->bindValue( ":numRows", $numRows, PDO::PARAM_INT );
    if ( $categoryId ) $st->bindValue( ":categoryId", $categoryId, PDO::PARAM_INT );
    $st->execute();
    $list = array();

    while ( $row = $st->fetch() ) {
      $news = new news( $row );
      $list[] = $news;
    }

    // Now get the total number of articles that matched the criteria
    $sql = "SELECT FOUND_ROWS() AS totalRows";
    $totalRows = $conn->query( $sql )->fetch();
    $conn = null;
    return ( array ( "results" => $list, "totalRows" => $totalRows[0] ) );
  }


Заранее спасибо)
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
IgorPI
@IgorPI
public static function getCategory($categoryId = null, $offset = 0, $count = 1000 ) 
{
    ...
    $sql = "SELECT *, UNIX_TIMESTAMP(publicationDate) AS publicationDate
            FROM news $categoryClause
            ORDER BY id DESC LIMIT :offset, :count";
   ...
  }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы