关于两级目录拖拽排序的实现(源码示例下载)

两级目录通常是在开发项目中遇到的问题。例如,文章模块、产品模块,许多应该基于两级分类。一般解的排序方案,无论是在一级或多级分类,由管理员设置手动编辑同一水平的背景值进行排序,并确定显示顺序根据价值的大小,这样的操作更cumbersome.jquery具有一种通过拖放排序。从用户级别来看,这个操作非常直观,操作简单。在一个项目中,对两类分类中使用的产品的分类如下图所示:



在排序问题上,我们决定在拖动一个级别的分类时,使用jQuery的拖放插件实现一级分类,拖动一个级别级别的子类时拖动和排序子类。



在第一类分类名称的前台拖放+标志图标,并拖放一级分类。



在一级分类之前将两个级别的分类名称拖放到数字图标中,并在分类下拖放两级分类。

下面是数据库结构和程序代码数据库结构,实现上述功能。



复制代码代码如下所示:
创建表不存在(` product_classify `
` ID ` int(10)符号的非空auto_increment,
` ParentID ` int(10)符号的非空,
`名字` varchar(50)默认为空,
`排序` int(10)符号的非空默认'0',
主键(id)
auto_increment = 27 = MyISAM引擎默认的字符集utf8);

进口数据
复制代码代码如下所示:
插入` product_classify `(` ID `,` ParentID `,`名字`,`排序`)值
(1, 0,魔法道具,1),
(2, 1,近景魔法,2),
(3, 1,舞台魔术,1),
(4, 1,刘谦魔术,3),
(5, 0,更多的道具,2),
(6, 5,麻将牌系列,3),
(7, 5,扑克系列,1)。
(8, 5,颜色系列,5)。
(9, 5,可变卡片系列,4),
(10, 5,高科技系列,2);

代码风格
复制代码代码如下所示:

<!——
体{ margin: 0px;}
img {垂直对齐方式:居中;}
表TD {身高:28px;字体大小:13px;背景颜色:# ffffff;}
形式{ margin: 0px;padding: 0px;}
编辑。
。UI移动{边界:1px冲# 666;高度:30px;}
。标题{文本对齐:左;填充左:7px;身高:30px;字体大小:13px;font-weight: bold;颜色:# 444;}

UL,李{ margin: 0px;padding: 0px;}
。left_nav {保证金:0 0px 10px 10px;填料顶部:5px;字体大小:14px;线高度:30px;}
。left_nav李{列表样式类型:无;}
。导航{宽度:280px;列表样式类型:无;文本对齐:左;}
。导航里跨{ margin: 0 0px 0 10px;字体大小:12px;}
/ * * / =================== ==================两目录
。导航李UL {列表样式:无;文本对齐:左;边缘上:4px;}
Li UL li。资产净值{文本缩进:25px;边界:无; / *两目录背景* /保证金:- 7px 000 _margin:0px 0;8px 0;}
navv Li跨{ margin: 0 0px 0 10px;字体大小:12px;}
。F {垂直对齐:中部;宽度:16px;身高:16px;}
显示:无;}
-->


加载js文件和代码
复制代码代码如下所示:



$(文档)Ready(函数(){)
$(#毫米排序({)。
不透明性:0.5,
光标:'move,
回复:真的,
手柄:F,
占位符:'ui-move,
更新:函数(){
串行=美元(这)。排序(连载);
$(#回归)。负荷(myrun /排序。PHP+序号);
}
});
$(div #毫米排序({)。
不透明性:0.5,
光标:'move,
回复:真的,
手柄:T,
占位符:'ui-move,
更新:函数(){
串行=美元(这)。排序(连载);
$(#回归)。负荷(myrun /排序。PHP+序号);
}
});
$()。Toggle(函数(){)
如果($(this)。Attr(src)= = 'images /加。gif){
$(#毫米)。找到(F)Attr(src。
$(#毫米)。找到(div)(隐藏); / /隐藏子类
('div美元,$(this)。父母('。资产净值:第一'))(显示); / /点击显示当前大类
$(这)。Attr(src
其他{ }
$(这)。Attr(src
('div美元,$(this)。父母('。资产净值:第一'))(隐藏); / / $($(this)。父母('div:第一)+。odd2 ')(隐藏);
}
}函数(){()
如果($(this)。Attr(src)= = 'images /加。gif){
$(#毫米)。找到(F)Attr(src。
$(#毫米)。找到(div)藏();
('div美元美元,(这)。父母('。资产净值:第一')),表明();
$(这)。Attr(src
其他{ }
$(这)。Attr(src
('div美元,$(this)。父母('。资产净值:第一'))(隐藏); / / $($(this)。父母('div:第一)+。odd2 ')(隐藏);
}
});
/ / $('。odd2 }}:第一,')(隐藏); / /初始化你的隐藏主题分类的变化:在显示CSS子类:none.this可以显示第一个直接。以前都是扩大影响,那么所有的隐藏,然后显示第一不是很好的。
$(div:第一#毫米UL)(显示); / /显示第一主题分类表
$(#毫米UL:第一。F)。Attr(src
});


显示代码
复制代码代码如下所示:


< PHP
通过过滤子类的条件,只显示分类(级别)。
为SQL = 'select张,a.parentid,a.name,a.sort,计数(数据)为数从product_classify作为。
为SQL。=右加入product_classify乙方对b.parentid =张,a.parentid = 0;
为SQL。=由张订单a.sort组;
查询= mysql_query美元($ SQL);
如果(mysql_num_rows($查询)){
而(ARR = mysql_fetch_array美元($查询)){
回声';
回声{姓名}(美元$ ARR ARR {数量});
为SQL =选择张,a.name,a.sort从product_classify即a.parentid = $ ARR {id}组。
query2 = mysql_query美元($ SQL);
如果(mysql_num_rows($ query2)){

而($ arr2 = mysql_fetch_array($ query2)){

回声{姓名} $ arr2 ;

}
回声';
}

}
其他{ }
没有产品分类;
}
>


排序操作sort.php
复制代码代码如下所示:
< PHP
包括(, / conn.php );
菜单_get美元美元= {菜单' };
开关(strtolower(美元菜单{ 0 })){
case'productclassify:
$表= 'product_classify;
打破;
}
($ i = 1;$ i <计数(菜单);$ + +){
为SQL =更新。$表让排序= '。$ Iid =。$菜单{ $ };
mysql_query($ SQL);
}
>

实例下载
二级目录拖动排序的实现及演示源代码的下载