繁体   English   中英

PHP-MySQL“下一个”-“上一个”链接(带有顺序)

[英]PHP - MySQL “next” - “previous” link with ordering

我有这样的桌子

id    |   name      |  image     |    ordering
------+-------------+------------+--------------
1     |   name 1    |  one.jpg   |      5
------+-------------+------------+--------------
2     |   name 2    |  two.jpg   |      2
------+-------------+------------+--------------
3     |   name 3    |  thr.jpg   |      3
------+-------------+------------+--------------
4     |   name 4    |  for.jpg   |      7
------+-------------+------------+--------------
5     |   name 5    |  fiv.jpg   |      1
------+-------------+------------+--------------
6     |   name 6    |  six.jpg   |      9
------+-------------+------------+--------------

我要求按照顺序在页面中显示第一张图像。 以下查询对我有用

SELECT * FROM images ORDER BY ordering ASC LIMIT 0,1 - row with id 5 will return

接下来,我必须在底部的“上一个”和“下一个”中显示2个链接(由于这是第一页,因此无需显示“上一个”)

Okey ..通过单击“下一步”,我必须显示下一页(即,根据表其ID为2的行)。 在该页面中需要显示“ prev”,这将导致第一个结果。 该页面上的“下一步”必须引向ID为3的行

我努力了

select * from images where id < $local_id order by id desc limit 1
 select * from images where id > $local_id order by id asc limit 1

但是既然有订单就行了...

有人可以跟我分享一个主意吗? 提前致谢

在MySQL LIMIT X, Y是要获取的范围,其中X是起始行(0是第一行),Y是要返回的行数

为了实现您想要的功能,您需要为所浏览的每一页使用页码,然后使用它们来计算X值,Y始终为1,因为每页只需要1张图像。

这样的事情会让您入门:

<?php

$page = (isset($_GET['page'])) ? $_GET['page'] : 1;

$startPoint = $page - 1;

$query = "SELECT * FROM images ORDER BY ordering ASC LIMIT $startPoint,1";

$rowCount = 0; // replace this with a count of all your rows/images

然后你的链接会像

<a href="index.php?page=1">First</a>
<a href="index.php?page=<?php echo $page - 1?>">Prev</a>
<a href="index.php?page=<?php echo $page + 1?>">Next</a>
<a href="index.php?page=<?php echo $rowCount;?>Last</a>

下一个

select * from images where id = $local_id+1 limit 1

以前

select * from images where id = $local_id-1 limit 1

您可以更改限制以实现它,根据页面的更改更改限制。

    SELECT * FROM images ORDER BY ordering ASC LIMIT 1,1 - row with id 2 will return
    SELECT * FROM images ORDER BY ordering ASC LIMIT 2,1 - row with id 3 will return

不好+1 / -1不好,防止id(页面)不存在,请在以前的id处使用sql。

示例ur主页ID 3和ID 4不存在...发生:

下一个:

select * from images where id = (select min(id) from images where id > 4)

以前:

select * from images where id = (select max(id) from images where id < 4)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM