按下下一个按钮时,PHP分页不会更改

时间:2014-01-11 19:00:09

标签: php mysql pagination

我正在尝试做一个简单的分页,它将从MySQL检索数据并显示上一个和下一个按钮,没有用于计算页面的数字,虽然一旦按下下一个按钮没有信息更新,我不确定是否我应该使用while或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类中,因为找到要编辑的文件夹中的每个类会很痛苦。我做错了什么?

1 个答案:

答案 0 :(得分:0)

首先,我建议您将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>';
?>

注意:这是示例代码。你应该在委托生产之前编辑