热搜:NVER node 开发 php

求一个排序算法

2024-09-06 16:30:02
求一个排序算法

   保存一堆文件,路径入数据库,以页码123456...数字命名,现在想在其中插入一个文件,算法应该怎么写?
    我的思路是,从数据里调出路径,将大于需要插入的页数的文件名加一,然后再批量更新数据库文件名。可是现在运行后数据库没有反应,请问我这个思路对吗??
    源码如下

$newpage//新页码$res = mysql_query("select id,page from table by page asc");while($arr=mysql_fetch_row($res)){		$arr2[$arr[0]]=$arr[1];	}	$count=count($arr2)+1;for($i=$newpage;$i<$count-$newpage;$i++){	$arr3[$i]=$arr2[$i]+1;}foreach($arr3 as $k=>$v){$q= mysql_query("update table set page = case id 		when $k  then $v ");}


回复讨论(解决方案)

$q= mysql_query("update table set page = case id when $k then $v ");

then 是什么?

case when... then....的句式
批量上传

请问有人知道吗 ??

1.不是很清楚你的意思,给出表结构和简单的例子,
2.看起来不用这么麻烦,应该简单的sql就可以达到你现在代码的效果
3.如果"运行后数据库没有反应", 应该是出了错, 至少把错误信息显示出来

发现我的算法确实存在问题,有些情况没有考虑进去。
我现在的情况是,文件名用数字序列命名,比如是1、2、3、4、5,路径存入数据库,现在想将文件5插入到2前面,原来的2、3、4文件名就要相应的加1,各位大神有没有其他好的思路或例子?? 想了一天还是不行,谢谢了

update ... set num=num+1 where num BETWEEN 2 and 5-1
update ... set num=2 where num=5

试了一下,还是不行

那就是你没有把需求描述清楚

自己解决问题了,谢谢版主,现在将自己的算法写出来,希望可以帮到其他人。

if(!empty($newpage)){/***$arr 是被插入数组,$page是当前文件名,$newpage是插入的页码*/foreach ($arr as $k=>$v){	if ($v>=$newpage && $v<$page+1){		$v=$v+1;		$q= mysql_query("update table set page = $v where id=$k");	}}      mysql_query("update table set credit_order = $newpage where id=$id");}

这是什么算法啊 

兄弟, 相信我, 花点时间把问题说清楚后, 
你就不需要每次让可怜的电脑运行这么多次查询了.....

自己解决问题了,谢谢版主,现在将自己的算法写出来,希望可以帮到其他人。

PHP code?123456789101112if(!empty($newpage)){/***$arr 是被插入数组,$page是当前文件名,$newpage是插入的页码*/foreach ($arr as $k=>$v){    if ($v>=$newpage && $v……