我有一张名为“产品”的表。
我正在使用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被删除,下一个链接将不会跳过该页面。
如何改善动态“下一步”链接?
答案 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>';
}