簡體   English   中英

按下下一個按鈕時,PHP分頁未更改

[英]PHP pagination not changing when next button is pressed

我正在嘗試做一個簡單的分頁,它將從MySQL檢索數據並顯示上一個和下一個按鈕,沒有用於計數頁面的數字,盡管一旦按下了下一個按鈕,則不會更新任何信息,我不確定是否應該使用一會兒或foreach循環。

詢問

pageClass.php

public function classname 
{
    $start_page = 0;
    $per_page = 8;

    if(!isset($_GET['page']))
    {
        $page = 1;
    } else {   
        $page = $_GET['page'];
    }

    if($page<=1)
        $start_page = 0;
    else
    $start_page = $page * $per_page - $per_page;

    $this->db->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
    $sth = $this->db->prepare("SELECT * FROM articles ORDER BY article_uid DESC LIMIT ?, ?");
    $sth->execute(array($start_page, $per_page));

    $row = $sth->fetchAll();
    return $row;
}

然后在.php文件中以這種方式顯示它,我得到了標題,但是一旦按下按鈕,便沒有其他頁面打開。

index.php

foreach($latestArticles as $article)
{  
    $title = $latest['title'];

    echo '<div>'.$title.'</div>';

}

$prev = $page - 1;
$next = $page + 1;

echo "
    <a href='?page=$prev'>prev</a>
    <a href='?page=$next'>next</a>
";

我不想將div放在php類中,因為在文件夾中找到要編輯的每個類會很麻煩。 我究竟做錯了什么?

首先,我建議您將pageClass.php更改為更抽象的內容

<?PHP
  class pageClass
  {
    private $db;
    private $articlesPerPage = 8;
    private $startPage = 0;

    public function __construct($db)
    {
      #TODO check if $db is valid PDO
      $this->db = $db;
    }

    public function setArticlesPerPage($articlesPerPage)
    {
      $this->articlesPerPage = $articlesPerPage;
    }

    public function setStartPage($startPage)
    {
      $this->startPage = $startPage;
    }

    public function getArticles()
    {
      $this->db->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
      $query = $this->db->prepare("SELECT * FROM articles ORDER BY article_uid DESC LIMIT ?, ?");
      $queryResult = $query->execute(array($this->startPage, $this->articlesPerPage));
      return $queryResult;
    }
  }

嘗試將index.php更改為以下內容

<?PHP

  $page = (int)$_GET['page'];
  $pageClass = new pageClass($pdo);

  if($page > 0)
  {
    $pageClass->setStartPage($page);
  }

  $lastestArticles = $pageClass->getArticles();
  foreach($lastestArticles as $article)
  {
    echo '<div>'.$article['title'].'</div>';
  }

  echo '<a href="index.php?page='.$page-1.'">prev</a>';
  echo '<a href="index.php?page='.$page+1.'">next</a>';
?>

注意:這是示例代碼。 在進行生產之前,您應該對其進行編輯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM