(高分)一个报表,显示多条查询结果,能否做到点击某一报表列名区域就可以控制重新排序,如同outlook的收件箱效果,点击发件人,时间等列可

websa 2003-04-17 10:46:45
一个报表,显示多条查询结果,能否做到点击某一报表列名区域就可以控制重新排序,如同outlook的效果,点机发件人,时间等列可以升序或者降顺的效果,谁能给个demo做到按字母顺序,时间等的排序效果?
...全文
68 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sandyuk 2003-04-17
  • 打赏
  • 举报
回复

to JK_10000(JK1)
我用的是后台排序,但前台有前台的好处啊。

但若你要分页显示并要按数据库数据排序就必须后台重新查询加order by了。
soff 2003-04-17
  • 打赏
  • 举报
回复
http://www.geocities.com/deepgrid/docs/TOC.html
awaysrain 2003-04-17
  • 打赏
  • 举报
回复
http://www.brainjar.com/dhtml/tablesort/demo.html

或者重新查询加order by
JK_10000 2003-04-17
  • 打赏
  • 举报
回复
建议不要用前台排序。
而是加上一个查询排序条件后重新更新页面(用的是数据库排序)
sandyuk 2003-04-17
  • 打赏
  • 举报
回复

查询语句:
<?
if(!isset($order))$order = "staff_no";
if(!isset($desc))$desc = "ASC";
if(!isset($page_num))$page_num = "10";

$sql = "FROM $staff_tables as s left join $dept_tables as d on d.dept_id=s.dept left join $business_tables as b on b.id=s.business WHERE 1";
if(isset($leave)&&$leave)
{
$sql .= " and s.leavedate is not null";
}
else $sql .= " and s.leavedate is null";
if(isset($dept_id))
{
if($dept_id!="0"&&$dept_id!="search")$sql .= " and s.dept='$dept_id'";
}
else $sql .= " and 0";
if(isset($business_id)&& $business_id)
{
$sql .= " and s.business='$business_id'";
}
if(isset($area)&& $area)
{
$sql .= " and s.area like '%$area%'";
}
if(isset($value) && $value)
{
$sql .= " and ( s.name like '%$value%' or s.loginname like '%$value%'";
if(!eregi("".$value."","JYS"))$sql .= " or s.staff_no like '%$value%'";
$sql .= ")";
}
$sql .= " ORDER by s.$order $desc";

// Search rows num .
$query = "SELECT COUNT(*) as count ".$sql;
$OPresult = @mysql_query($query);
if ($OPresult)$rows = mysql_result($OPresult, 0, 'count');
else $rows = 0;
@mysql_free_result($OPresult);

@mysql_free_result($OPresult);
if(!$q_num || $q_num <= 0)$q_num = 1;
$pages = ceil($rows/$page_num);
if($q_num >= $pages)$q_num = $pages;
$p_start = ($q_num-1)*$page_num;
$p_end = ($q_num-1)*$page_num + $page_num;
if($q_num == $pages) $p_end = $rows;

$query = "SELECT s.*,d.dept_name,b.name_c as business ".$sql." LIMIT $p_start, $page_num";
// echo $query.mysql_error();
$result = mysql_query($query);
?>
sandyuk 2003-04-17
  • 打赏
  • 举报
回复

给你参考:

<script language="JavaScript">
<!--
var endPage = 0;
function winopen(theURL,vHeight,vWidth){
if(!vHeight)vHeight = 250;
if(!vWidth)vWidth = 350;
win=window.open(theURL, "staff<?=$_COOKIE["PHPSESSID"]?>", "resizable=yes,depended=yes,status=no,width="+vWidth+",height="+vHeight);
win.focus();
}
function NextPage(vPId){
vQnum = list_form.q_num.value;
vQnum = vQnum*1;
if(vQnum == endPage && vPId>0){
alert("已经是最后一页了!");
return false;
}
if(vQnum == 1 && vPId<0){
alert("已经是第一页了!");
return false;
}
list_form.q_num.value = vQnum + vPId;
list_form.submit();
return false;
}
function GoToPage(vPId){
vQnum = <?=($q_num)?$q_num:0?>;
if(vQnum == vPId == endPage == 1){
alert("只有一页!");
return false;
}
if(vQnum == vPId){
if(endPage == vPId)alert("已经是最后一页了!");
else if(1 == vPId)alert("已经是第一页了!");
else alert("已经是第 "+vPId+" 页了!");
return false;
}
list_form.q_num.value = vPId;
list_form.submit();
return false;
}
function OrderBy(vBy){
vOrderBy = list_form.order.value;
vDesc = list_form.desc.value;
if(vOrderBy != vBy)vDesc = "ASC";
else if(vDesc == "DESC")vDesc = "ASC";
else vDesc = "DESC";
list_form.order.value = vBy;
list_form.desc.value = vDesc;
list_form.submit();
return false;
}
//-->
</script>
....

<input name="cl" type="hidden" value="<?=$cl?>" />
<input name="fetch" type="hidden" value="<?=$fetch?>" />
<input name="likes" type="hidden" value="<?=$likes?>" />
<input name="value" type="hidden" value="<?=$value?>" />
<input name="order" type="hidden" value="<?=$order?>" />
<input name="desc" type="hidden" value="<?=$desc?>" />
<input name="dept_id" type="hidden" value="<?=$dept_id?>" />
<input name="business_id" type="hidden" value="<?=$business_id?>" />
<input name="area" type="hidden" value="<?=$area?>" />
<input name="leave" type="hidden" value="<?=$leave?>" />
<tr bgcolor="#BBBBBB">
<td height="5" colspan="15"></td>
</tr>
<tr align="center" bgcolor="#CCCCCC">
<td nowrap="nowrap"><a href='#' onclick="return OrderBy('staff_no')">职员编号</a><span id="staff_no"></span></td>
<td><a href='#' onclick="return OrderBy('loginname')">英文名</a><span id="loginname"></span></td>
<td><a href='#' onclick="return OrderBy('name')">姓名</a><span id="name"></span></td>
<td><a href='#' onclick="return OrderBy('dept')">部门</a><span id="dept"></span></td>
<td><a href='#' onclick="return OrderBy('business')">职务</a><span id="business"></span></td>
<td><a href='#' onclick="return OrderBy('area')">区域</a><span id="area"></span></td>
<td></td>
</tr>
<tr bgcolor="#BBBBBB">
<td height="5" colspan="15"></td>
</tr>
<?
echo "<script>$order.innerHTML = ' <img src=\"../images/".$desc."_order.gif\" width=\"7\" height=\"7\" />';</script>";
....

websa 2003-04-17
  • 打赏
  • 举报
回复
awaysrain(绝对零度) 的demo是我要的效果
给分!我已经做好分页了,所以速度上能够承受
  • 打赏
  • 举报
回复
还是后台吧,
前台,有个几十页,可能就完了
websa 2003-04-17
  • 打赏
  • 举报
回复
我要求的肯定是前台的方案,不然到js板块来做什么啊。

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧