希望能找到一个更好的办法来处理下拉菜单项的排序问题。

目前正在写的是一个在下拉菜单中添加友情链接的程序,用到了phplib的模板类和数据库类。但是我发现到了排序的时候却还不如直接用sql语句简单。

我的思路是这样的,
有一个表单来负责显示现有的网站名。里面有向上和向下两个按钮,点击按钮使得存在数据库的排序值变化(加1或减1),在点了按钮之后,要求在表单中出现新的网站名序列。然后可以进行下一次点击。但是这个过程不能影响整个表单。因为还有网站logo等项没有添加。

现在我能实现在表单中显示出网站的内容,但不知道如何点击进行排序。

还望高手指教。

---------------------------------------------------------------

不是很明白你的意思。
一:点击按钮使得存在数据库的排序值变化(加1或减1)
使用隐藏frame提交,也达到了不影响表单的目的
二:在点了按钮之后,要求在表单中出现新的网站名序列
一种方法:提交成功后,从新从服务器下载下拉菜单数据(参考:http://www.csdn.net/develop/Read_Article.asp?Id=14090)
第二种方法:一开始显示菜单的时候也标记了排序值,在提交成功后
直接用JavaScript把排序值加1,然后在根据排序值的来判断是否要和前一项菜单交换位置
,如果是新加入就直接添加在最后一项即可

---------------------------------------------------------------

我这里有个这样的程序,我贴出来大家一块研究。。

  1<html>
  2<head>
  3<title>分类顺序调整</title>
  4<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
  5<link href="../images/1.css" rel="stylesheet" type="text/css"/>
  6<script language="javascript">   
  7  
  8function saveOrder(me){   
  9me.disabled=true;   
 10var objForm=me.form;   
 11var col=document.all("cat_id[]");   
 12var objSelect=document.all.tags("SELECT")[0];   
 13for (i=0;i<col.length;i++){   
 14col.item(i).value=objSelect.options(i).value;   
 15}   
 16objForm.action.value='save';   
 17objForm.submit();   
 18}   
 19function moveMenu(flag){   
 20var objSelect=document.all.tags("SELECT")[0];   
 21var indexMIN=0;   
 22var indexMAX=objSelect.length-1;   
 23var i=objSelect.selectedIndex;   
 24var objOptions=objSelect.options(i);   
 25objSelect.remove(i);   
 26if (flag=='-1'){   
 27objSelect.add(objOptions,--i);   
 28}else{   
 29objSelect.add(objOptions,++i);   
 30}   
 31changeButton(objSelect);   
 32if (objSelect.form.btnSave.disabled){   
 33objSelect.form.btnSave.disabled=false;   
 34}   
 35}   
 36function changeButton(me){   
 37var objForm=me.form;   
 38var indexMIN=0;   
 39var indexMAX=me.length-1;   
 40var i=me.selectedIndex;   
 41objForm.btnUp.disabled=false;   
 42objForm.btnDown.disabled=false;   
 43if (i==indexMIN){   
 44objForm.btnUp.disabled=true;   
 45}   
 46if(i==indexMAX){   
 47objForm.btnDown.disabled=true;   
 48}   
 49}   
 50</script>
 51</head>
 52<body bgcolor="#f7f7f7" leftmargin="5" text="#000000" topmargin="5">
 53<form action="&lt;?=$PHP_SELF?&gt;" method="post" name="">
 54<table align="center" border="0" cellpadding="0" cellspacing="0" width="280">
 55<tr>
 56<td height="15">
 57<div align="center">
 58<input class="input" disabled="" name="btnUp" onclick="moveMenu('-1')" title="栏目上移" type="button" value="↑"/>
 59</div>
 60</td>
 61<td height="15">
 62<div align="center">
 63<input class="input" disabled="" name="btnDown" onclick="moveMenu('1')" title="栏目下移" type="button" value="↓"/>
 64</div>
 65</td>
 66<td height="15">
 67<div align="center">
 68<input class="input" disabled="" name="btnSave" onclick="saveOrder(this)" title="保存对栏目做的修改" type="button" value="保 存"/>
 69</div>
 70</td>
 71<td height="15">
 72<div align="center">
 73<input class="input" name="exit" onclick="window.close();" type="button" value="退出设置"/>
 74</div>
 75</td>
 76</tr>
 77</table>
 78<table align="center" border="0" cellpadding="0" cellspacing="0" width="280">
 79<tr>
 80<td background="&lt;?=$host_url?&gt;/images/member/line160.gif" height="5"></td>
 81</tr>
 82<tr>
 83<td>sss</td>
 84</tr>
 85<tr>
 86<td>
 87<select class="input" name="catlist" onchange="changeButton(this)" size="10" style="width:90%;">
 88<?   
 89if($get_cat_count!==0){   
 90while ($get_cat_result=mysql_fetch_array($get_cat_query)){   
 91?>
 92<option fcatid"];?="" value="&lt;?=$get_cat_result[">"&gt;<?=$get_cat_result["fcatname"];?></option>
 93<?   
 94}   
 95}   
 96?>
 97</select>
 98<?   
 99for ($i=1;$i<=$get_cat_count;$i++){   
100?>
101<input name="cat_id[]" type="hidden" value=""/>
102<?   
103}   
104?>
105<input name="pid" type="hidden" value="&lt;?=$pid?&gt;"/>
106<input name="gid" type="hidden" value="&lt;?=$gid?&gt;"/>
107<input name="action" type="hidden" value=""/>
108</td>
109</tr>
110</table>
111</form>
112</body>
113</html>

表tblwebusercat

字段 类型 属性 Null 默认 额外 操作
fid int(10) 否 auto_increment 更改 删除 主要 索引 唯一 全文搜索
fcatid int(10) 否 0 更改 删除 主要 索引 唯一 全文搜索
fcatname varchar(200) 否 更改 删除 主要 索引 唯一 全文搜索
fcatgid int(2) 否 0 更改 删除 主要 索引 唯一 全文搜索
fcatpid int(10) 否 0 更改 删除 主要 索引 唯一 全文搜索
fusername varchar(30) 否 更改 删除 主要 索引 唯一 全文搜索
forder int(2) 否 100 更改 删除 主要 索引 唯一 全文搜索

Published At
Categories with Web编程
Tagged with
comments powered by Disqus