php+dojo 的数据库保存拖动布局的一个方法dojo 这里下载

看老大介绍的dojo框架,学习着写了下。刚开始学习php 请大家指教下!发现发不了附件。发两个代码大家自己体会了。


复制代码 代码如下:

<?php 
session_start(); 
if ($_SESSION['gh']==''){ 
header('location:login.php');  

include("config.php"); 
$sql="select * from module";  
$result=mssql_query($sql,$conn); 
$num=mssql_num_rows($result); 
//echo $num; 
?> 
<style type="text/css">  
<!--  
#container0 {  
border:1px dotted #990033; 
height: 10px; 
margin: 10px;  

-->  
</style> 
<script type="text/javascript" src="include/dojo.js"></script> 
<script type="text/javascript"> 
//引用以下两个dojo包  
dojo.require("dojo.style"); 
dojo.require("dojo.dnd.*"); 
function init(){ 
  //利用classname取到元素列表,将其注册为dojo.dnd.HtmlDragSour 
  var arr=dojo.html.getElementsByClass('divdrag') 
  for(var i=0;i<arr.length;i++){ 
   var parentDiv=arr.parentNode.id 
   new dojo.dnd.HtmlDragSource(arr,parentDiv);    
  } 
  //定义容器  
new dojo.dnd.HtmlDropTarget("container0", ["container0",<?php for ( $p = 1 ; $p <= $num ; $p ++) { 
echo '"'.'container'.$p.'"'; 
if ($p != $num){ 
  echo ","; 

  } 
  echo ']); ';

for ($p =1 ; $p <=$num ;$p++){ 
  echo chr(13).'new dojo.dnd.HtmlDropTarget("container'.$p.'", ["container0",'; 
   for ($o =1 ;$o <= $num;$o++){ 
  echo '"container'.$o.'"'; 
  if ($o != $num){ 
   echo ","; 
  }   

  echo ']); ';   
  } 
  echo chr(13);

?> 
}   
//增加到window.onload事件中 
window.onload=function(){init();} 
function bjsave() { 
gr="" 
<?php 
$sql='select id from module'; 
$result=mssql_query($sql,$conn); 
while($myrow=mssql_fetch_array($result)) 
echo 'if (mokuai'.$myrow['id'].'.parentElement.id !="container0") {'.chr(13).'gr=gr+'.$myrow['id'].'+"|"+ mokuai'.$myrow['id'].'.parentElement.id+ "$"'.chr(13).'}'.chr(13); 
?> 
form1.gr.value=gr; 
form1.submit(); 

</script> 
<div id="overDiv" STYLE="position:absolute; visibility:hide; z-index: 1;"></div> 
<div id="container0"> 
<?php 
$sql='select * from module where id not in (select mokuaiid from geren where gh ='.$_SESSION['gh'].')'; 
$result=mssql_query($sql,$conn); 
while($myrow=mssql_fetch_array($result)) 
echo '<span class="divdrag" id="mokuai'.$myrow['id'].'" style="border:1px dotted #990033;height: 20px;width:100px;margin: 5px; " title="'.$myrow['mmark'].'">'.$myrow['mn'].'</span>'; 
?> 
</div> 
<table width="98%" border="1" cellspacing="0" cellpadding="0"> 
  <tr> 
    <td width="150" valign="top"> 
<?php 
for ($p=1; $p<=$num;$p=$p+2){  
  echo '<div id="container'.$p.'" style="border:1px dotted #990033;height: 100px;margin: 10px; ">'; 
  $sql='select mokuaiid from geren where biaogeid='.$p.' and gh ='.$_SESSION['gh']; 
  $result=mssql_query($sql,$conn); 
  while($myrow=mssql_fetch_array($result)){ 
   $sql='select * from module where id='.$myrow['mokuaiid']; 
   $result1=mssql_query($sql,$conn);    
   while($myrow1=mssql_fetch_array($result1)){ 
    echo '<span class="divdrag" id="mokuai'.$myrow1['id'].'" style="border:1px dotted #990033;height: 20px;width:100px;margin: 5px; " title="'.$myrow1['mmark'].'">'.$myrow1['mn'].'</span>'; 
   } 
  }      
  echo '</div>';  
}   
?></td> 
    <td width="150" valign="top"> 
<?php 
for ($p=2; $p<=$num;$p=$p+2){  
  echo '<div id="container'.$p.'" style="border:1px dotted #990033;height: 100px;margin: 10px; ">'; 
  $sql='select mokuaiid from geren where biaogeid='.$p.' and gh ='.$_SESSION['gh']; 
  $result=mssql_query($sql,$conn); 
  while($myrow=mssql_fetch_array($result)){ 
   $sql='select * from module where id='.$myrow['mokuaiid']; 
   $result1=mssql_query($sql,$conn);    
   while($myrow1=mssql_fetch_array($result1)){ 
    echo '<span class="divdrag" id="mokuai'.$myrow1['id'].'" style="border:1px dotted #990033;height: 20px;width:100px;margin: 5px; " title="'.$myrow1['mmark'].'">'.$myrow1['mn'].'</span>'; 
   } 
  }      
  echo '</div>';  
}   
?> 
</td>  
  </tr> 
</table> 
<input type="button" name="Submit" value="保存布局" onclick="bjsave();" /> 
<form id="form1" name="form1" method="post" action="savegr.php"> 
<input name="gr" type="hidden" value="" /> 
</form>

复制代码 代码如下:

<?php 
session_start(); 
if ($_SESSION['gh']==''){ 
header('location:login.php');  

include("config.php"); 
$sql='delete from geren where gh='.$_SESSION['gh']; 
mssql_query($sql); 
$gr=str_replace("container","",$_POST['gr']); 
//echo $gr; 
$array = explode("$", $gr); 
for ($i=0;$i<=count($array)-2;$i++){ 
$add=explode("|",$array[$i]); 
$sql='insert into geren (mokuaiid,biaogeid,gh) values ("'.$add[0].'","'.$add 
[1].'","'.$_SESSION['gh'].'")'; 
//echo $sql.'<br>'; 
mssql_query($sql); 

header("location:view.php"); 
?>

dojo 这里下载 http://download.dojotoolkit.org/release-0.3.1/dojo-0.3.1-ajax.zip

时间: 2007-03-05

基于jquery的拖动布局插件

复制代码 代码如下: (function($){ $.fn.lsMovePanel=function(){ var id=this.attr("id"); var X=Y=0; var offsetX=offsetY=0;//绝对位置 var OldIndex=0;///存储原始索引 var Temp_Li="<li id=\"Temp_Li\" style=\"background-color:#FFFFFF;border-color:#

用javascript做拖动布局的思路

好了,转入正文,在开始之前先介绍几个功能函数! 1.格式化事件的函数 复制代码 代码如下: function getEvent(){       //同时兼容ie和ff的写法       if(document.all)    return window.event;       func=getEvent.caller;       while(func!=null){           var arg0=func.arguments[0];           if(arg0){     

拖动布局之保存布局页面cookies篇

我实现的方法是记录每列拥有的拖动对象,这样在初始或刷新的时候读取这列有哪些拖动对象,直接把拖动对象通过appenChild加进去就可以了,比如拖动后列的id为col2,在这一列的拖动对象的id为col1_2,col3_1,col2_1,我就把col2=col1_2|col3_1|col2_1记录下来,在刷新页面的时候就读取col2的值,循环通过document.getElementById(col2).appendChild(document.getElementById(col1_2))实现显

Nuxt默认模板、默认布局和自定义错误页面的实现

一.默认模板和默认布局 通常用于一些有固定格式的网站 比如一些网站的头部和底部都是一样的 此时即可使用默认模板 默认模板 在项目的根目录下创建一个名为app.html的文件 Nuxt即可自动将其识别为默认模板: 用法和字符串拼接有点类似 可将{{HEAD}}视为头部内容 将{{APP}}视为页面主体内容 (HEAD和APP都需大写) <!DOCTYPE html> <html lang="en"> <head> {{HEAD}} </head&

python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例

PyQt5动态(可拖动控件大小)布局控件QSplitter简介 PyQt还提供了特殊的布局管理器QSplitter.它可以动态地拖动子控件之间的边界,算是一个动态的布局管理器,QSplitter允许用户拖动子控件的边界控制子控件的大小,并提供一个处理拖曳子控件的控制器 在QSplitter对象中各子控件默认是横向布局的,可以使用Qt,Vertical进行垂直布局 QSplitter类中常用的方法 方法 描述 addWidget() 将小控件添加到QSplitter管理器的布局中 indexOf(

Recyclerview添加头布局和尾布局、item点击事件详解

简介: 本篇博客主要包括recyclerview添加多种布局以及添加头布局和尾布局,还有item点击事件 思路: 主要重写Recyclerview.Adapter中的一些方法 1.public int getItemCount()  item熟练  +2(头布局和尾布局) 2.public int getItemViewType(int position)   判断position 设置itemType 3.创建不同的ViewHolder,分别用来加载头布局,正常布局,尾布局 4.public

Android ListView添加头布局和脚布局实例详解

Android ListView添加头布局和脚布局 之前学习喜马拉雅的时候做的一个小Demo,贴出来,供大家学习参考: 如果我们当前的页面有多个接口.多种布局的话,我们一般的选择无非就是1.多布局:2.各种复杂滑动布局外面套一层ScrollView(好low):3.头布局脚布局.有的时候我们用多布局并不能很好的实现,所以头布局跟脚布局就是我们最好的选择了:学过了ListView的话原理很简单,没啥理解的东西,直接贴代码了: 效果图: 正文部分布局: fragment_classify.xml <

Android开发菜单布局之表格布局示例

本文实例讲述了Android开发菜单布局之表格布局.分享给大家供大家参考,具体如下: 多用于静态菜单页面 xml代码 代码内带详细解释 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.andro

python抓取并保存html页面时乱码问题的解决方法

本文实例讲述了python抓取并保存html页面时乱码问题的解决方法.分享给大家供大家参考,具体如下: 在用Python抓取html页面并保存的时候,经常出现抓取下来的网页内容是乱码的问题.出现该问题的原因一方面是自己的代码中编码设置有问题,另一方面是在编码设置正确的情况下,网页的实际编码和标示的编码不符合造成的.html页面标示的编码在这里: 复制代码 代码如下: <meta http-equiv="Content-Type" content="text/html;

android Activity线性布局和表格布局实例讲解

实验中只需要编写相应的xml的代码,java代码不需要更改,因为我们这里只是练习android的界面设计. 线性布局:线性布局就是将各种控件按照行或者列依次进行排列.其中本实验用到的各控件的属性解释如下:android:layout_weight属性是指不同的控件在activity中占有体积大小的比例.android:paddingLeft指内边距左的距离,即控件内文字离控件左边边界的距离.其它的类推.android:gravity指控件内文字相对于控件本身的方向属性,长度为dip,与像素独立的

vue 实现 rem 布局或vw 布局的方法

一.实现 rem 布局 移动端 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" /> 方法一.在 index.html 或者 main.js 中添加以下代码: const setHtmlFontSize = () => { let deviceWidth = document.documentElement.clientWidt

深入理解IOS控件布局之Masonry布局框架

前言: 回想起2013年做iOS开发的时候,那时候并没有采用手写布局代码的方式,而是采用xib文件来编写,如果使用纯代码方式是基于window的size(320,480)计算出一个相对位置进行布局,那个时候windows的size是固定不变的,随着iphone5的发布,windows的size(320,568)也发生了变化,而采用autoresizingMask的方式进行适配,到后来iphone 6之后windows size的宽度也随之变化,开始抛弃autoresizingMask改用auto