1

我有一张这样的桌子

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

接下来我必须在“Prev”和“Next”底部显示2个链接(因为这是第一页不需要显示“Prev”)

Okey .. 按“Next”,我必须显示下一页(即根据表格,它的行 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

但由于它有订购它不会工作......

有人可以和我分享一个想法吗?提前致谢

4

4 回答 4

3

在 MySQLLIMIT 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>
于 2013-05-21T10:20:53.417 回答
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
于 2013-05-21T10:25:31.820 回答
1

下一个

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

以前的

select * from images where id = $local_id-1 limit 1
于 2013-05-21T10:17:57.443 回答
1

不好+1/-1不好,防止id(页面)不存在,使用sql where previous id。

示例您的主页 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)
于 2015-05-06T14:48:01.560 回答