PHP实现Google plus的好友拖拽分组功能

开发 后端
我已经使用PHP和jQuery实现了同样的好友拖拽添加分组的应用。本篇PHP教程就来告诉你如何实现,希望我的示例会对你的社交网站项目有所帮助。

你一直在寻找google pls的好友拖拽分组功能吗?google实现的太帅了!我已经使用PHP和jQuery实现了同样的好友拖拽添加分组的应用。本篇PHP教程就来告诉你如何实现,希望我的示例会对你的社交网站项目有所帮助。

[[79207]]

实现 Google plus 的好友拖拽分组功能

在线示例:Google plus 的好友拖拽分组功能

 

示例数据库包含三个表,即用户和用户组之间的关系。

用户表Members

表包含成员(用户)数据,如member_id,member_image等。

  1. CREATE TABLE IF NOT EXISTS `members` (  
  2. `member_id` int(9) NOT NULL AUTO_INCREMENT,  
  3. `member_name` varchar(220) NOT NULL,  
  4. `member_image` text NOT NULL,  
  5. `dated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  
  6. PRIMARY KEY (`member_id`)  
  7. ); 

用户组Groups

  1. CREATE TABLE IF NOT EXISTS `groups` (  
  2. `group_id` int(9)  AUTO_INCREMENT,  
  3. `group_name` varchar(220),  
  4. `sort` int(9),  
  5. `date` timestamp  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  
  6. PRIMARY KEY (`group_id`),  
  7. KEY `sort` (`sort`)  
  8. ); 

用户组之间的关系User_group

用户和用户租表的关系表user_group包含user_id(memeber_id一样),group_id,member_id()和sort(排序)字段。

  1. CREATE TABLE IF NOT EXISTS `user_group` (  
  2. `id` int(9) NOT NULL AUTO_INCREMENT,  
  3. `user_id` int(9) NOT NULL,  
  4. `group_id` int(9) NOT NULL,  
  5. `member_id` int(9) NOT NULL,  
  6. `sort` int(9) NOT NULL,  
  7. PRIMARY KEY (`id`)  
  8. ); 

#p#

Javascript脚本

我们对两个类属性:.members.group运用拖拽。

  1. <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js"></script>  
  2. <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.js"></script>  
  3. <script type="text/javascript" src="jquery.livequery.min.js"></script>  
  4. <script type="text/javascript" >  
  5. $(function()  
  6. {  
  7. // Initiate draggable for public and groups  
  8. var $gallery = $( ".members, .group" );  
  9. $( "img", $gallery ).live("mouseenter"function()  
  10. {  
  11. var $this = $(this);  
  12. if(!$this.is(':data(draggable)'))  
  13. {  
  14. $this.draggable({  
  15. helper: "clone",  
  16. containment: $( "#demo-frame" ).length ? "#demo-frame" : "document",  
  17. cursor: "move" 
  18. });  
  19. }  
  20. });  
  21. // Initiate Droppable for groups  
  22. // Adding members into groups  
  23. // Removing members from groups  
  24. // Shift members one group to another  
  25. $(".group").livequery(function(){  
  26. var casePublic = false;  
  27. $(this).droppable({  
  28. activeClass: "ui-state-highlight",  
  29. drop: function( event, ui ) {  
  30. var m_id = $(ui.draggable).attr('rel');  
  31. if(!m_id)  
  32. {  
  33. casePublic = true;  
  34. var m_id = $(ui.draggable).attr("id");  
  35. m_id = parseInt(m_id.substring(3));  
  36. }  
  37. var g_id = $(this).attr('id');  
  38. dropPublic(m_id, g_id, casePublic);  
  39. $("#mem"+m_id).hide();  
  40. $( "<li></li>" ).html( ui.draggable ).appendTo( this );  
  41. },  
  42. out: function(event, ui) {  
  43. var m_id = $(ui.draggable).attr('rel');  
  44. var g_id = $(this).attr('id');  
  45. $(ui.draggable).hide("explode", 1000);  
  46. removeMember(g_id,m_id);  
  47. }  
  48. });  
  49. });  
  50. // Add or shift members from groups  
  51. function dropPublic(m_id, g_id,caseFrom)  
  52. {  
  53. $.ajax({  
  54. type:"GET",  
  55. url:"groups.php?m_id="+m_id+"&g_id="+g_id,  
  56. cache:false,  
  57. success:function(response){  
  58. $.get("groups.php?reload_groups"function(data){  
  59. $("#groupsall").html(data);  
  60. $("#added"+g_id).animate({"opacity" : "10" },10);  
  61. $("#added"+g_id).show();  
  62. $("#added"+g_id).animate({"margin-top""-50px"}, 450);  
  63. $("#added"+g_id).animate({"margin-top""0px","opacity" : "0" }, 450);  
  64. });  
  65. }  
  66. });  
  67. }  
  68. // Remove memebers from groups  
  69. // It will restore into public groups or non grouped members  
  70. function removeMember(g_id,m_id)  
  71. {  
  72. $.ajax({  
  73. type:"GET",  
  74. url:"groups.php?do=drop&mid="+m_id,  
  75. cache:false,  
  76. success:function(response){  
  77. $("#removed"+g_id).animate({"opacity" : "10" },10);  
  78. $("#removed"+g_id).show();  
  79. $("#removed"+g_id).animate({"margin-top""-50px"}, 450);  
  80. $("#removed"+g_id).animate({"margin-top""0px","opacity" : "0" }, 450);  
  81. $.get("groups.php?reload"function(data){ $("#public").html(data); });  
  82. }  
  83. });  
  84. }  
  85. });  
  86. </script> 

#p#

groups.php

我们在这里处理拖拽添加用户组的数据处理功能。

  1. <?php  
  2. require_once("multipleDiv.inc.php");  
  3. // Initiate Object  
  4. $obj = new Multiplediv();  
  5. // Add or Update Ajax Call  
  6. if(isset($_GET['m_id']) and isset($_GET['g_id']))  
  7. {  
  8. $obj->addMembers((int)$_GET['m_id'], (int)$_GET['g_id']);  
  9. exit;  
  10. }  
  11. // Remove Memebers from groups Ajax call  
  12. if(isset($_GET['do']))  
  13. {  
  14. $obj->removeMember($_GET['mid']);  
  15. exit;  
  16. }  
  17. // Reload groups each ajax call  
  18. if(isset($_GET['reload'])){ echo $obj->getMembers_reload(); exit; }  
  19. if(isset($_GET['reload_groups'])){ echo $obj->getmembergroups_reload(); exit; }  
  20. // Initiate Groups and members  
  21. $members = $obj->public_members();  
  22. $groups = $obj->groups();  
  23. ?>  
  24. Friends  
  25. <div id="main_portion">  
  26. <div id="public">  
  27. <!-- Initiate members -->  
  28. <?php  
  29. if(!isset($members))  
  30. $members = $obj->public_members();  
  31. if($members)  
  32. {  
  33. foreach($members as $member)  
  34. {  
  35. extract($member);  
  36. echo "<div class='members' id='mem".$member_id."'>\n";  
  37. echo "<img src='images/".$member_image."' rel='".$member_id."'>\n";  
  38. echo "<b>".ucwords($member_name)."</b>\n";  
  39. echo "</div>";  
  40. }  
  41. }  
  42. else 
  43. echo "Members not available";  
  44. ?>  
  45. </div>  
  46. <div id="groupsall">  
  47. Groups  
  48. <!-- Initiate Groups -->  
  49. <?php  
  50. if(!isset($groups))  
  51. $groups = $obj->groups();  
  52. if($groups)  
  53. {  
  54. foreach($groups as $group)  
  55. {  
  56. extract($group);  
  57. echo "<div id='".$group_id."' class='group'>\n";  
  58. echo ucwords($group_name);  
  59. echo "<div id='added".$group_id."' class='add' style='display:none;' ><img src='images/green.jpg'></div>";  
  60. echo "<div id='removed".$group_id."' class='remove' style='display:none;' ><img src='images/red.jpg'></div>";  
  61. echo "<ul>\n";  
  62. echo $obj->updateGroups($group_id);  
  63. echo "</ul></div>";  
  64. }  
  65. }  
  66. ?>  
  67. </div>  
  68. </div> 

multipleDiv.inc.php

在这里修改数据库连接信息。

  1. <?php  
  2. // Database declaration's  
  3. define("SERVER""localhost");  
  4. define("USER""username");  
  5. define("PASSWORD""password");  
  6. define("DB""database");  
  7.  
  8. class Multiplediv  
  9. {  
  10. ........................  
  11. ........................  
  12. .........................  
  13. }  
  14. ?> 

到这里,我们关于如何实现Google plus 的好友拖拽分组功能就完成了。源代码:点此下载

原文链接:http://www.9lessons.info/2011/09/google-plus-style-drag-and-drop-adding.html

责任编辑:张伟 来源: phpFuns
相关推荐

2012-06-13 10:36:44

PHP

2012-05-17 13:17:26

HTML5

2024-03-27 08:28:31

元素拖拽API文件上传

2009-12-29 18:09:00

Silverlight

2017-03-13 10:11:28

AndroidRecyclerVie功能介绍

2021-08-27 08:38:10

CSS 技巧 resize

2020-05-14 14:57:48

MySQLExcel排序

2018-06-04 10:53:25

2009-11-30 15:10:46

PHP substr函

2009-11-23 13:00:40

PHP获取QQ邮箱好友

2024-01-23 09:15:33

Vue3组件拖拽组件内容编辑

2009-11-30 17:49:51

PHP函数preg_s

2009-12-02 15:45:04

PHP抓取天气预报

2010-12-28 13:44:12

PHPXMLjQuery

2011-07-25 15:54:08

XCode PHP

2015-03-13 15:21:23

phpgoogleapi

2012-06-12 16:45:57

PHP

2013-05-16 11:11:41

Google

2024-04-15 00:00:01

GoogleAndroid机器学习

2018-12-12 15:30:28

Google LensiOSAPP
点赞
收藏

51CTO技术栈公众号