Home >Backend Development >PHP Tutorial >求一个排序算法
保存一堆文件,路径入数据库,以页码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……