Home >Backend Development >PHP Tutorial >求一个排序算法

求一个排序算法

WBOY
WBOYOriginal
2016-06-23 14:03:41946browse

   保存一堆文件,路径入数据库,以页码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……

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn