仿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 ?>