你一直在寻找google pls的好友拖拽分组功能吗?google实现的太帅了!我已经使用PHP和jQuery实现了同样的好友拖拽添加分组的应用。本篇PHP教程就来告诉你如何实现,希望我的示例会对你的社交网站项目有所帮助。
效果如下:
示例数据库包含三个表,即用户和用户组之间的关系。
用户表Members
表包含成员(用户)数据,如member_id,member_image等。
1
2
3
4
5
6
7
|
CREATE TABLE IF NOT EXISTS `members` ( `member_id` int (9) NOT NULL AUTO_INCREMENT, `member_name` varchar (220) NOT NULL , `member_image` text NOT NULL , `dated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP , PRIMARY KEY (`member_id`) ); |
用户组Groups
1
2
3
4
5
6
7
8
|
CREATE TABLE IF NOT EXISTS `groups` ( `group_id` int (9) AUTO_INCREMENT, `group_name` varchar (220), `sort` int (9), ` date ` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP , PRIMARY KEY (`group_id`), KEY `sort` (`sort`) ); |
用户组之间的关系User_group
用户和用户租表的关系表user_group包含user_id(memeber_id一样),group_id,member_id()和sort(排序)字段。
1
2
3
4
5
6
7
8
|
CREATE TABLE IF NOT EXISTS `user_group` ( `id` int (9) NOT NULL AUTO_INCREMENT, `user_id` int (9) NOT NULL , `group_id` int (9) NOT NULL , `member_id` int (9) NOT NULL , `sort` int (9) NOT NULL , PRIMARY KEY (`id`) ); |
Javascript脚本
我们对两个类属性:.members和.group运用拖拽。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
<script type= "text/javascript" src= "https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js" ></script> <script type= "text/javascript" src= "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.js" ></script> <script type= "text/javascript" src= "jquery.livequery.min.js" ></script> <script type= "text/javascript" > $( function () { // Initiate draggable for public and groups var $gallery = $( ".members, .group" ); $( "img" , $gallery ).live( "mouseenter" , function () { var $ this = $( this ); if (!$ this .is( ':data(draggable)' )) { $ this .draggable({ helper: "clone" , containment: $( "#demo-frame" ).length ? "#demo-frame" : "document" , cursor: "move" }); } }); // Initiate Droppable for groups // Adding members into groups // Removing members from groups // Shift members one group to another $( ".group" ).livequery( function (){ var casePublic = false ; $( this ).droppable({ activeClass: "ui-state-highlight" , drop: function ( event, ui ) { var m_id = $(ui.draggable).attr( 'rel' ); if (!m_id) { casePublic = true ; var m_id = $(ui.draggable).attr( "id" ); m_id = parseInt(m_id.substring(3)); } var g_id = $( this ).attr( 'id' ); dropPublic(m_id, g_id, casePublic); $( "#mem" +m_id).hide(); $( "<li></li>" ).html( ui.draggable ).appendTo( this ); }, out: function (event, ui) { var m_id = $(ui.draggable).attr( 'rel' ); var g_id = $( this ).attr( 'id' ); $(ui.draggable).hide( "explode" , 1000); removeMember(g_id,m_id); } }); }); // Add or shift members from groups function dropPublic(m_id, g_id,caseFrom) { $.ajax({ type: "GET" , url: "groups.php?m_id=" +m_id+ "&g_id=" +g_id, cache: false , success: function (response){ $.get( "groups.php?reload_groups" , function (data){ $( "#groupsall" ).html(data); $( "#added" +g_id).animate({ "opacity" : "10" },10); $( "#added" +g_id).show(); $( "#added" +g_id).animate({ "margin-top" : "-50px" }, 450); $( "#added" +g_id).animate({ "margin-top" : "0px" , "opacity" : "0" }, 450); }); } }); } // Remove memebers from groups // It will restore into public groups or non grouped members function removeMember(g_id,m_id) { $.ajax({ type: "GET" , url: "groups.php?do=drop&mid=" +m_id, cache: false , success: function (response){ $( "#removed" +g_id).animate({ "opacity" : "10" },10); $( "#removed" +g_id).show(); $( "#removed" +g_id).animate({ "margin-top" : "-50px" }, 450); $( "#removed" +g_id).animate({ "margin-top" : "0px" , "opacity" : "0" }, 450); $.get( "groups.php?reload" , function (data){ $( "#public" ).html(data); }); } }); } }); </script> |
groups.php
我们在这里处理拖拽添加用户组的数据处理功能。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
<?php require_once ( "multipleDiv.inc.php" ); // Initiate Object $obj = new Multiplediv(); // Add or Update Ajax Call if (isset( $_GET [ 'm_id' ]) and isset( $_GET [ 'g_id' ])) { $obj ->addMembers((int) $_GET [ 'm_id' ], (int) $_GET [ 'g_id' ]); exit ; } // Remove Memebers from groups Ajax call if (isset( $_GET [ 'do' ])) { $obj ->removeMember( $_GET [ 'mid' ]); exit ; } // Reload groups each ajax call if (isset( $_GET [ 'reload' ])){ echo $obj ->getMembers_reload(); exit ; } if (isset( $_GET [ 'reload_groups' ])){ echo $obj ->getmembergroups_reload(); exit ; } // Initiate Groups and members $members = $obj ->public_members(); $groups = $obj ->groups(); ?> Friends <div id= "main_portion" > <div id= "public" > <!-- Initiate members --> <?php if (!isset( $members )) $members = $obj ->public_members(); if ( $members ) { foreach ( $members as $member ) { extract( $member ); echo "<div class='members' id='mem" . $member_id . "'>\n" ; echo "<img src='images/" . $member_image . "' rel='" . $member_id . "'>\n" ; echo "<b>" .ucwords( $member_name ). "</b>\n" ; echo "</div>" ; } } else echo "Members not available" ; ?> </div> <div id= "groupsall" > Groups <!-- Initiate Groups --> <?php if (!isset( $groups )) $groups = $obj ->groups(); if ( $groups ) { foreach ( $groups as $group ) { extract( $group ); echo "<div id='" . $group_id . "' class='group'>\n" ; echo ucwords( $group_name ); echo "<div id='added" . $group_id . "' class='add' style='display:none;' ><img src='images/green.jpg'></div>" ; echo "<div id='removed" . $group_id . "' class='remove' style='display:none;' ><img src='images/red.jpg'></div>" ; echo "<ul>\n" ; echo $obj ->updateGroups( $group_id ); echo "</ul></div>" ; } } ?> </div> </div> |
multipleDiv.inc.php
在这里修改数据库连接信息。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<?php // Database declaration's define( "SERVER" , "localhost" ); define( "USER" , "username" ); define( "PASSWORD" , "password" ); define( "DB" , "database" ); class Multiplediv { ........................ ........................ ......................... } ?> |
到这里,我们关于如何实现Google plus 的好友拖拽分组功能就完成了。以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。