当前位置:编程学习 > asp >>

超酷的通用分页显示控制 (二) 加入查询控制

答案:在上一篇中,我们分析了一个简单的通用分页代码控制。
但是通常我们在分页的 ASP 页面中要使用到查询功能,那么怎样将查询也“封装”起来呢?
同样需要用到 include 方式。

我们可以把查询看作两部分,
1、输入,即接收用户输入的查询字符串,我们把它放在 query.inc 中
2、输出,即根据用户输入的内容构造查询条件,我们把它放在 query_result.inc 中

这样一来,我们的思路就很清晰了,
1、将 query_result.inc 放在 SQL 语句之前,构造查询条件,然后将查询条件嵌入 SQL 语句中
2、将 query.inc 放在 ASP 页面适当的地方(通常和 navigator.inc 在同一行)。


在接下来的文章中,要稍微复杂一点,因此我们先来看看一个示范的数据库:mytest

表1            tbluserinfo                    ' 用户信息表

    字段        flduserinfo_id                    ' 用户 ID
                flduserinfo_username
                flduserinfo_nickname
                flduserinfo_password

表2            tbladdressbook                ' 通讯录表

    字段        fldaddressbook_id
                fldaddressbook_classid            ' 类别 ID
                fldaddressbook_userid            ' 用户 ID
                fldaddressbook_nickname

表3            tbladdressbook_class        ' 通讯录类别表

    字段        fldaddressbook_class_id            ' 类别 ID
                fldaddressbook_class_title        ' 例如:朋友、客户、亲人、网友
                fldaddressbook_class_explain    ' 类别说明

视图        vwaddressbook

    SELECT tbladdressbook_class.fldaddressbook_class_title,
          tbladdressbook_class.fldaddressbook_class_explain,
          tbladdressbook.fldaddressbook_id, tbladdressbook.fldaddressbook_userid,
          tbladdressbook.fldaddressbook_classid, tbladdressbook.fldaddressbook_nickname,
    FROM tbladdressbook INNER JOIN
          tbladdressbook_class ON
          tbladdressbook.fldaddressbook_classid = tbladdressbook_class.fldaddressbook_class_id

[注意:我在每个字段中加上了表的名字,这是为了生成视图方便,以及其他隐含的麻烦。经过我的长期尝试,发现这种方法的确很好。因此向大家推荐这种命名方式。]

当我们在 tbladdressbook 中查询时,要用 flduserid 来区分每个用户的通讯录内容,因此要加上 " flduserid=" & Session("userid") 的限制。现在我们把这个限制加到我们的 SQL 语句中。


请看 sample2.asp



<一> 需要分页的 ASP 文件

sample2.asp

<%
    ' 取得当前 ASP 页面的完整路径,重要技巧
    theScript    = Request.ServerVariables("SCRIPT_NAME")
    myconnstr    = "driver={SQL Server};server=yourserver;uid=sa;pwd=;database=mytest"
    thePageSize    = 20    ' 每页显示的记录数

    '//////////////////////////////////////////////////////////
    '
    ' 定义表名
    '
    '//////////////////////////////////////////////////////////

    theTableName= "addressbook"

    '//////////////////////////////////////////////////////////
    '
    ' 查询条件
    '
    '//////////////////////////////////////////////////////////

    theQueryField    = "fld" & theTableName & "_nickname"' 查询字段,完整名字
    theQueryTitle    = "昵称"                            ' 字段显示标题
    theQueryTable    = "vw" & theTableName                ' 字段所在的表,完整名字

    ' 如果是查询模式,则构造模糊查询语句
    if request("mode") = "query" then
        %><!--#include file="../inc/control/query_result.inc"--><%
    else
    ' 否则忽略
        theQueryCon = "1>0"
    end if

    '//////////////////////////////////////////////////////////
    '
    ' 限制条件
    '
    '//////////////////////////////////////////////////////////

    theLimitCon    = "fld" & theTableName & "_userid=" & Session("userid")

    '//////////////////////////////////////////////////////////
    '
    ' 构造 SQL 语句
    '
    '//////////////////////////////////////////////////////////

    uSQL = "select * from " & theQueryTable & " where ( " & theQueryCon & " ) and ( " & theLimitCon & " ) "

%>
<!--#include file="../inc/control/navigator_init.inc"-->

<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" href=></head>

                      <!-- 你的 HTML 代码//-->

                  &

上一个:超酷的通用分页显示控制 (一) 基本原型
下一个:暑期缤纷巨献之~------超级+无敌--------XML+javascript+ASP在线短信息功能!(2)

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,