PHP分页排序问题

因为有分页功能,排序就出了问题了,最多只能排序第一页,翻页后,列表无法继续排序。请问有什么好方法可以解决先排序后翻页呢?

我是按获取当前位置与数据库经纬度计算后获得距离后,按最近的距离进行由近到远排序的,最多只能排序第一页,第二页是乱的。

如下:

第一页内容

  1. 列表1 距离:1.5km

  2. 列表2 距离: 2.5km
    ...

翻页后,第二页内容

  1. 列表3 距离:5.5km

  2. 列表4 距离:1.2km

  3. 列表5 距离:7.2km

想要实现的效果如下

第一页内容

  1. 列表1 距离:1.2km

  2. 列表2 距离:1.5km
    ...

翻页后,第二页内容

  1. 列表3 距离:2.5km

  2. 列表4 距离:5.2km

  3. 列表5 距离:7.2km

在第一页就把所有最近距离排序好,翻页后接着上一页继续排序。请问该怎么做呢?非常感谢!~

眼眸繁星
浏览 712回答 4
4回答

芜湖不芜

数据是从哪里来的,如果从数据库,可以使用sql中的order by关键字,如果是从搜索引擎里面数据,也都应当有相应的排序功能,一般的数据排序都不用php做的,

哆啦的时光机

分页的时候同样加过滤条件的呀,或者你可以把数据都取出来,先排序,然后按分页切割数组,如果实时性要求不高,可以做redis缓存一下

繁花如伊

首先,你通过计算得到一个计算之后的距离数组.然后通过usort(),根据数组中的距离字段进行排序,在根据你的page和pagesize分割数组,array_slice()。就可以实现了。或者你之前返回整个排序之后的数组到前端,用js进行数组分割操作也是可以的。

互换的青春

从数据库取数据的话:举个栗子:每页10条数据,用距离倒序排列 第一页select * from tableName where country='china' order by [距离] desc limit 0, 10;第二页select * from tableName where country='china' order by [距离] desc limit 10, 10;
打开App,查看更多内容
随时随地看视频慕课网APP