PHP动态上一个/下一个链接

时间:2016-12-04 17:03:38

标签: php

我有一张名为“产品”的表。

我正在使用id参数显示PHP产品视图页面中的所有数据。

用我的代码:

if(isset($_GET['id'])) {
    $id = $_GET['id'];
}

$query = "SELECT * FROM product WHERE id = $id ";
$select_product = $db->query($query);

while($row = $db->fetch_object($select_product)) {
    $status = $row->status;

    if($status == 'published') {
        $title = $row->title;
        echo $title;
    }

} 

我可以提取所需的所有数据。在这个例子中,我可以回应标题。

但是如何显示动态下一页链接?对于之前的链接也是如此。

当我尝试使用此代码时:

$query = "SELECT id FROM product";
$select_ids = $db->query($query);

while($row = $db->fetch_object($select_ids)) {
    $ids = $row->id;

    echo $ids;
}

我可以看到该表中的所有页面。就我而言,他们是20,21,22 ...... 28

接下来,我尝试过这样:

$query = "SELECT id from product";
$select_ids = $db->query($query);

if($select_ids->num_rows > 0) {
    $next = $id + 1;
    echo '<a href="' . $next . '">Next</a>';
} else {

}

使用此代码,我的“下一个”链接成功转到下一页。但是,当它结束时,在这种情况下,当我在第28页时,下一个动态链接转到空白页面(29)。这也不是一个好方法,因为如果某个页面,比方说25被删除,下一个链接将不会跳过该页面。

如何改善动态“下一步”链接?

1 个答案:

答案 0 :(得分:2)

首先,您需要两个查询来获取要显示的数据,另一个用于计算行数,我们还需要一些额外的变量。

代码如下:

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

$numberOfResultsPerPage = 10;
$offset = $numberOfResultsPerPage * ($page - 1)

$count = $db->query("SELECT COUNT(id) as num FROM product");
while($row = $db->fetch_object($count)) {
    $numberOfRows = $row->num;
}

$query = "SELECT id FROM product LIMIT ". $offset.", ".$numberOfResultsPerPage;
$select_ids = $db->query($query);

while($row = $db->fetch_object($select_ids)) {
    $ids = $row->id;
    echo $ids;
}
if($page > 1) {
    echo '<a href="index.php?page=' . ($page-1) . '">Prev</a>';
}
if($page < ceil($numberOfRows / $numberOfResultsPerPage)) {
    echo '<a href="index.php?page=' . ($page+1) . '">Next</a>';
}

更新:

如果您需要找到产品的下一个和上一个产品,这就是解决方案。如果你有很多产品并不好,但如果产品数量不足1000,那就不应该有任何问题:

if(isset($_GET['id'])) {
    $id = $_GET['id'];
}

$query = "SELECT id from product";
$select_ids = $db->query($query);

$ids = array();
$i = 0;
while($row = $db->fetch_object($select_ids)) {
    $ids[$i] = $row->id;
    if($row->id == $id) {
        $index = $i;
    }
    $i++;
}
if(isset($ids[$index-1])) {
    echo '<a href="' . $ids[$index-1]. '">Prev</a>';
}
if(isset($ids[$index+1])) {
   echo '<a href="' . $ids[$index+1]. '">Next</a>';
}