求一个php的上下排序 包括带分页就好比一个新闻列表:id sort_id 操作1 1 向下
-------------------------
2 5 向上 | 向下
-------------------------
3 8 向上 | 向下
-------------------------
4 10 向上 | 向下
-------------------------
6 58 向上 | 向下
-------------------------
6 58 向下
-------------------------
共3页 现第一页 首页 上一页 下一页 末页
我的数据库只要两个字段. 但是数据可能有几百条
所以我希望分页的时候也能处理好好上下排序.
-------------------------
2 5 向上 | 向下
-------------------------
3 8 向上 | 向下
-------------------------
4 10 向上 | 向下
-------------------------
6 58 向上 | 向下
-------------------------
6 58 向下
-------------------------
共3页 现第一页 首页 上一页 下一页 末页
我的数据库只要两个字段. 但是数据可能有几百条
所以我希望分页的时候也能处理好好上下排序.
以前写的改的,可能有些乱define('PAGESIZE',5);
if(isset($_GET['page']))
$page=$_GET['page'];
else
$page=1;
if(isset($_GET['order']))
$order=$_GET['order'];
else
$order=1;$conn=mysql_connect("192.168.1.2","db_user","db_pass");
mysql_select_db("chushandb");
mysql_query("set names gb2312");
$r=mysql_query("select count(*) as recordnum from table");
$p=mysql_fetch_array($r);
$totalpage=intval(($p['recordnum']+PAGESIZE-1)/PAGESIZE);
$result=mysql_query("select * from table order by id ".($order == 1? "asc": "desc")." limit ".($page-1)*PAGESIZE.",".PAGESIZE);echo "<form>";
if($page>1)
{
?>
<a href="?order=1<?php if($page)echo '&page='.$page ?>">上排序</a>
<a href="?order=2<?php if($page)echo '&page='.$page ?>">下排序</a>
<a href="?page=1<?php if($order)echo '&order='.$order ?>">首页</a>
<a href="?page=<?php echo $page-1;?><?php if($order)echo '&order='.$order ?>">上一页</a>
<?php
}
if($page<$totalpage)
{
?>
<a href="?order=1<?php if($page)echo '&page='.$page ?>">上排序</a>
<a href="?order=2<?php if($page)echo '&page='.$page ?>">下排序</a>
<a href="?page=<?php echo $page+1;?><?php if($order)echo '&order='.$order ?>">下一页</a>
<a href="?page=<?php echo $totalpage;?><?php if($order)echo '&order='.$order ?>">尾页</a>
<?php
}
?>
转到:
<input type=text name=page size="2">
<?php
echo "总记录:$p[recordnum]当前页$page/$totalpage </form>";
?>
<?php
echo "<table border=1><tr>";
while($field=mysql_fetch_assoc($result))
{
echo "<td><b><i>".$field['id']."</i></b></td>";
}
echo "</tr>";while($row=mysql_fetch_array($result))
{
echo "<tr><td>".$row['id']."</td><td>".$row['name']."</td><td>".$row['name']."</td></tr>";
}
echo "</table>";
echo "<form>";
if($page>1)
{
?><a href="?order=1<?php if($page)echo '&page='.$page ?>">上排序</a>
<a href="?order=2<?php if($page)echo '&page='.$page ?>">下排序</a>
<a href="?page=1<?php if($order)echo '&order='.$order ?>">首页</a>
<a href="?page=<?php echo $page-1;?><?php if($order)echo '&order='.$order ?>">上一页</a>
<?php
}
if($page<$totalpage)
{
?>
<a href="?order=1<?php if($page)echo '&page='.$page ?>">上排序</a>
<a href="?order=2<?php if($page)echo '&page='.$page ?>">下排序</a>
<a href="?page=<?php echo $page+1;?><?php if($order)echo '&order='.$order ?>">下一页</a>
<a href="?page=<?php echo $totalpage;?><?php if($order)echo '&order='.$order ?>">尾页</a>
<?php
}
?>
转到:
<input type=text name=page size="2">
<?php
echo "总记录:$p[recordnum]当前页$page/$totalpage </form>";?>
我的意思是说:
一个表格
id sort_id 操作
=====================
1 2 向下
---------------------
2 3 向上 向下
---------------------
3 4 向上 向下
---------------------
1 5 向下
---------------------
共几页/第几页 上一页 下一页 ...我要做的是向下 向上的按钮排序....但是如果分页了就实现不到了...
点向下 将当前的sort_id 与下个sort_id 进行调换
向上向下链接上还要加上当前page的变量 点击之后仍然是在第page页
为什么换页不起作用?这样做的上下移动换页一样有效。因为你每点一次上下移动,取出的数据是经过重新排序的,所以跟翻页没有关系。id title listorder
1 测试1 1
2 测试2 2
3 测试3 3
4 测试4 4
看上表,假如我第一页只显示前三条数据,order by listorder asc limit 0,3,取出来的数据肯定是:id title listorder
1 测试1 1
2 测试2 2
3 测试3 3现在我让第三条数据下移,需要做的就是将"测试3"这条数据与"测试4"这条数据的listorder值交换。变成了这样:id title listorder
1 测试1 1
2 测试2 2
3 测试3 4
4 测试4 3
此时order by listorder asc limit 0,3查出来的数据就是id title listorder
1 测试1 1
2 测试2 2
3 测试3 4
page=pagecount,且循环=最后一页的记录数,那就是最后一页的最后一个,就下显示向上。向上:
"update tablename set `sort_id`=`sort_id`+1 where sort_id='".($sort_id-1)."'";
"update tablename set `sort_id`=`sort_id`-1 where id='$id'";向下:
"update tablename set `sort_id`=`sort_id`-1 where sort_id='".($sort_id+1)."'";
"update tablename set `sort_id`=`sort_id`+1 where id='$id'";
在程序里,不论你做什么操作:添加,删除,修改,只要sort_id发生了改变,那你都要更新对应的需要更新sort_id的记录
"update tablename set `sort_id`=`sort_id`+1 where sort_id>='1'";
"update tablename set `sort_id`='1' where id='$id'";