仿QQ空间相册拖动排序保存相册顺序

       看到论坛里有人问有没有人拔仿QQ空间相册拖动排序保存相册顺序,直觉这应该不是很难的东西,为什么我们的第一反应总是要去扒,不能先自己思考下怎么做,做原创不好么?虽然可以看看别人好的技术,但是凡事都“扒”,这也是一种悲哀,不单是个人的悲哀吧。

      扯多了。于是自己想了下。之前在论坛里也看见有高手写过拖拽的程序,自适应自识别位置,两个div调换位置。自己写了个,用了jquery,拖动功能是用的自己前面写的一个插件。

      图片的信息是存数据库,用一个字段(sort_key)保存图片的排序信息,数值小排在前面。

      前端拖动,更换位置时调换相应的div的left和top值,以及排序的sortkey的值,拖动完成后ajax后端保存。程序很简单。

      最后,在识别拖动的过程中,是遍历数组查询是否两个应当互换位置了,这个算法有待优化。

 

前端页面:http://ftpwfc.d185.webidcc.cn/test/mycss/

MySQL:

1 CREATE TABLE IF NOT EXISTS `images` (
2   `id` int(11) NOT NULL auto_increment,
3   `path` varchar(200) character set utf8 NOT NULL,
4   `sort_key` int(11) NOT NULL,
5   PRIMARY KEY  (`id`)
6 ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;

后台PHP:

显示图片:get.msg.php

 1 <?php
 2 include 'con_sql.php';
 3 con_sql( $sqlConfig1 );
 4 
 5 switch( $_POST['type'] ){
 6     case 'imageList':
 7         echo get_image_list();
 8         break;
 9 }
10 
11 
12 //获取图片列表
13 function get_image_list(){
14     $sql = "select id,path,sort_key from images order by sort_key";
15     $result = mysql_query($sql);
16     $resultNum = mysql_num_rows($result);
17     for($n = 0; $n < $resultNum; $n ++){
18         $resultArr = mysql_fetch_row($result);
19         $file['id'][$n] = $resultArr[0];
20         $file['file'][$n] = $resultArr[1];
21         $file['num'][$n] = $n;
22     }
23 
24     return json_encode($file);
25 }
26 
27 ?>

保存排序:set.msg.php

 1 <?php
 2 include 'con_sql.php';
 3 con_sql( $sqlConfig1 );
 4 
 5 switch( $_POST['type'] ){
 6     case 'imageList':
 7         echo set_image_list($_POST['content']);
 8         break;
 9 }
10 
11 
12 //保存图片列表
13 function set_image_list($content){
14     $num = count($content['sortKey']);
15     for($n = 0; $n < $num; $n ++){
16         $sql = "update images set sort_key = '".$content['sortKey'][$n]."' where id = '".$content['fileId'][$n]."'";
17         mysql_query($sql);
18     }
19 
20     return $num;
21 }
22 
23 ?>
原文地址:https://www.cnblogs.com/whatmiss/p/2670748.html