上一个,下一个,跟当前记录在第几行没关系比如 我要求按照插入时间排序,那么前一行就是比这条早插入的,时间离着最近的如果我要求修改时间的上一条呢,如果我要求权重最接近的上一条呢?……-------------------------------------- 所以,只要规定排序规则就好了, WHERE …AND条件… AND add_time<当前这条的时间 ORDER BY add_time DESC LIMIT 1就是add_time时间最接近的上一条
$sql = "SELECT * FROM `article` WHERE sortid=".$sortid . " AND id<" . $_GET['id'] . " ORDER BY id DESC LIMIT 1";/////上一条$sql = "SELECT * FROM `article` WHERE sortid=".$sortid . " AND id>" . $_GET['id'] . " ORDER BY id ASC LIMIT 1";/////下一条 //这样子分两次查询,是常用的办法,你上面的,一下子搜索所有的数据,就失去数据库索引的意义了 //sortid id都加索引,这种查询效率会非常高
很感谢,这个已经学到了,我想知道的有没有知道当前记录在当前类别中是第几条的 当前类别总条数$counts = mysql_fetch_array(mysql_query("select count(*) from table where sortid = ".$storid.""; echo $counts[0];但是怎么取得当前记录是当前类别的第多少条呢; 我是想实现上一个,下一个(已被你们解决) 当前 ".$当前第几条."(不知道怎么搞) / 总记录 $counts[0] 这样子可以让访问者看的更清楚一些
第几个可以这样$sql = "SELECT (count(*) + 1) AS num FROM `article` WHERE sortid=".$sortid . " AND id<" . $_GET['id']; //执行后,的结果,就是第几个
我要求按照插入时间排序,那么前一行就是比这条早插入的,时间离着最近的如果我要求修改时间的上一条呢,如果我要求权重最接近的上一条呢?……--------------------------------------
所以,只要规定排序规则就好了, WHERE …AND条件… AND add_time<当前这条的时间 ORDER BY add_time DESC LIMIT 1就是add_time时间最接近的上一条
你的下一条就是大于当前时间数据的第一条
用SQL语句来展示就是2楼的同学所说
查询比当前ID小(where id < '.$id.'上一篇)和比当前ID大(where id > '.$id.'下一篇)的1条(limit 0,1)数据
$rows = $db->getRows($sql);$m = 0;
for($i=0;$i<count($rows);$i++){
if($rows[$i]["id"] == $_GET['id']){
$m = $i+1;
$next = ($i<count($rows)-1)?$rows[$m]["id"]:"";
break;
}
}
这个是我获取当前id为$_GET['id']的下一条的id的方法,上一条的方法稍微变化一下就可以吧。写得不好,也请别的老师能给点意见。
//这样子分两次查询,是常用的办法,你上面的,一下子搜索所有的数据,就失去数据库索引的意义了
//sortid id都加索引,这种查询效率会非常高
当前类别总条数$counts = mysql_fetch_array(mysql_query("select count(*) from table where sortid = ".$storid."";
echo $counts[0];但是怎么取得当前记录是当前类别的第多少条呢;
我是想实现上一个,下一个(已被你们解决)
当前 ".$当前第几条."(不知道怎么搞) / 总记录 $counts[0]
这样子可以让访问者看的更清楚一些
//执行后,的结果,就是第几个
感谢感谢!!