PHP如何实现Google plus的好友拖拽分组效果
创始人
2024-12-09 16:06:24
0次

效果如下:

PHP如何实现Google plus的好友拖拽分组效果

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

用户表Members

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

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

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(排序)字段。

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运用拖拽。

 
 
 
 
$(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(); 
$( "
  • " ).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); });  }  });  }  }); 

    groups.php

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

    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 
     
     
     
    public_members(); 
    if($members) 
    { 
    foreach($members as $member) 
    { 
    extract($member); 
    echo "\n"; 
    echo "\n"; 
    echo "".ucwords($member_name)."\n"; 
    echo "
    ";  }  }  else  echo "Members not available";  ?> 
        Groups    groups();  if($groups)  {  foreach($groups as $group)  {  extract($group);  echo "\n";  echo ucwords($group_name);  echo "
    ";  echo "
    ";  echo "
      \n";  echo $obj->updateGroups($group_id);  echo "
    ";  }  }  ?> 
     

    multipleDiv.inc.php

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

    相关内容

    热门资讯

    空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
    空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
    格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
    空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
    格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
    品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
    空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
    空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
    中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
    中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...