当前位置: 首页 > 图文教程 > 网络编程 > ASP > 多字段模糊搜索的函数

ASP
对连串英文自动换行的解决方法 IE5.5
怎样写你自己的EMAIL组件(原理)
ASP中有关timeout超时的体会
用ASP实现从SQL Server导出数据到Access
ASP向NT域中加一个用户
ASP乱码的解决方法
关于 aspsmartupload 注册问题
利用XML不离开页面刷新数据
IIS 处理 SEARCH 请求漏洞
不用组件实现上载功能(1)
不用组件实现上载功能(2)
在网页中实现OICQ里的头像选择的下拉框
仅用xsl和asp实现分页功能
如何使用context()方法将数据置入表格(XML)
利用ASP从远程服务器上接收XML数据
将数据库里面的内容生成EXCEL
怎样在ASP里面创建统计图表
加密你的Access数据库
利用global.asp定时执行ASP
加密QueryString数据

ASP 中的 多字段模糊搜索的函数


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 115 ::
收藏到网摘: n/a

前段时间写了一个多字段模糊搜索的函数(类似baidui)。函数代码如下
'==================================================
'函数名:keyword_sousuo
'作 用:生成sql查询条件
'参 数:table_field ------ 表的字段名(之间用逗号分开)
' keyword ------ 搜索关键词(之间用空格分开)
'返 回:sql查询条件
'==================================================
function keyword_sousuo(byval table_field,byval keyword)
dim str01,str02,keywords,table_fields,i,j
table_fields=split(trim(table_field),",")
keywords=split(trim(keyword),",")
if table_field<>"" then
str01="("&table_fields(0)&" like '%"&keyword&"%'"
for j=0 to ubound(table_fields)
str01=str01&" or "&table_fields(j)&" like '%"&keyword&"%'"
next
str01=str01&")"
else
response.Write("<script>alert('参数错误(不能为空)!')</script>")
response.End()
end if
'全角--》半角 空格
'keyword=replace(keyword," "," ")
'while InStr(keyword," ")>0
' keyword=replace(keyword," "," ")
'wend
keywords=split(keyword," ")
if ubound(keywords)>0 then
for i=0 to ubound(keywords)
str02=str02&"("&table_fields(0)&" like '%"&keywords(i)&"%'"
for j=1 to ubound(table_fields)
str02=str02&" or "&table_fields(j)&" like '%"&keywords(i)&"%'"
next
str02=str02&")"
next
str02="("&replace(str02,")(",")and(")&")"
keyword_sousuo="(" & str01 & "or" & str02 & ")"
else
keyword_sousuo=str01
end if
end function
'==================================================
'函数名:keyword_tag
'作 用:将字符串里的关键词标记为红色
'参 数:str ------ 字符串
' keyword ------ 标记关键词(之间用空格分开)
'返 回:字符串(html格式)
'==================================================
function keyword_tag(byval str,byval keyword)
dim keywords,str01,str02,i
'全角--》半角 空格
'keyword=replace(keyword," "," ")
'while InStr(keyword," ")>0
' keyword=replace(keyword," "," ")
'wend
str01=replace(str,keyword,"<font color=""#ff0000"">"&keyword&"</font>")
keywords=split(keyword," ")
if ubound(keywords)>0 then
str02=str
for i=0 to ubound(keywords)
str02=replace(str02,keywords(i),"<font color=""#ff0000"">"&keywords(i)&"</font>")
next
keyword_tag=str02
else
keyword_tag=str01
end if
end function
以下是一个例子 http://www.zhouhaihe.com/blog/uploads/200604/recordread.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
option explicit
dim conn,connstr,database
connstr="DBQ="+server.mappath("record.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=server.CreateObject("adodb.connection")
conn.open connstr
dim n,rs,page,keyword,keywords,RecordCount,pageCount,pos,i,sql_where
n=50
page=Request("page")
keyword=trim(request("keyword"))
sql_where=keyword_sousuo("title,cz,name,time",keyword)
set rs=server.CreateObject("adodb.recordset")
rs.open "select * from record where "&sql_where&" order by id desc",conn,1,2
if page=0 then
page=1
end if
RecordCount = 0
do while not rs.Eof
RecordCount = RecordCount +1
rs.MoveNext
loop
if not RecordCount=0 then
rs.MoveFirst
end if
pageCount=RecordCount/n
pageCount=int(pageCount)
if (RecordCount mod n)>0 then
PageCount=PageCount +1
end if
%>
<style type="text/css">
<!--
.STYLE3 {color: #666666}
-->
</style>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<form id="form1" name="form1" method="post" action="?"><tr><td align="center"><input name="keyword" type="text" id="keyword" value="<%=keyword%>" size="30" />
<input type="submit" name="Submit" value="搜索" />
<span class="STYLE3">(关键词之间用空格分开) </span></td>
</tr></form>
<tr>
<td height="5"></td>
</table>
<table width="600" border="1" align="center" cellpadding="4">
<tr align="center">
<td width="131">标题</td>
<td width="131">动作</td>
<td width="131">用户名</td>
<td width="132">时间</td>
</tr>
<%pos=0
do while pos<(page-1)*n
pos=pos+1
rs.moveNext
loop
i=0
while not rs.eof and i<n
i=i+1%>
<tr align="center">
<td><%=keyword_tag(rs("title"),keyword)%></td>
<td><%=keyword_tag(rs("cz"),keyword)%></td>
<td><%=keyword_tag(rs("name"),keyword)%></td>
<td><%=keyword_tag(rs("time"),keyword)%></td>
</tr>
<%rs.movenext
wend
rs.close
set rs=nothing
conn.close
set conn=nothing
'==================================================
'函数名:keyword_sousuo
'作 用:生成sql查询条件
'参 数:table_field ------ 表的字段名(之间用逗号分开)
' keyword ------ 搜索关键词(之间用空格分开)
'返 回:sql查询条件
'==================================================
function keyword_sousuo(byval table_field,byval keyword)
dim str01,str02,keywords,table_fields,i,j
table_fields=split(trim(table_field),",")
keywords=split(trim(keyword),",")
if table_field<>"" then
str01="("&table_fields(0)&" like '%"&keyword&"%'"
for j=0 to ubound(table_fields)
str01=str01&" or "&table_fields(j)&" like '%"&keyword&"%'"
next
str01=str01&")"
else
response.Write("<script>alert('参数错误(不能为空)!')</script>")
response.End()
end if
'全角--》半角 空格
keyword=replace(keyword," "," ")
' while InStr(keyword," ")>0
' keyword=replace(keyword," "," ")
'wend
keywords=split(keyword," ")
if ubound(keywords)>0 then
for i=0 to ubound(keywords)
str02=str02&"("&table_fields(0)&" like '%"&keywords(i)&"%'"
for j=1 to ubound(table_fields)
str02=str02&" or "&table_fields(j)&" like '%"&keywords(i)&"%'"
next
str02=str02&")"
next
str02="("&replace(str02,")(",")and(")&")"
keyword_sousuo="(" & str01 & "or" & str02 & ")"
else
keyword_sousuo=str01
end if
end function
'==================================================
'函数名:keyword_tag
'作 用:将字符串里的关键词标记为红色
'参 数:str ------ 字符串
' keyword ------ 标记关键词(之间用空格分开)
'返 回:字符串(html格式)
'==================================================
function keyword_tag(byval str,byval keyword)
dim keywords,str01,str02,i
'全角--》半角 空格
keyword=replace(keyword," "," ")
'while InStr(keyword," ")>0
' keyword=replace(keyword," "," ")
'wend
str01=replace(str,keyword,"<font color=""#ff0000"">"&keyword&"</font>")
keywords=split(keyword," ")
if ubound(keywords)>0 then
str02=str
for i=0 to ubound(keywords)
str02=replace(str02,keywords(i),"<font color=""#ff0000"">"&keywords(i)&"</font>")
next
keyword_tag=str02
else
keyword_tag=str01
end if
end function
dim y
%> <tr align="center">
<td colspan="4"> <%=RecordCount%>个 <font color="#FF0000"><%=page%></font>/<%=pageCount%>页
<%=n%>个/页 转到:
<SELECT name="select" onchange=window.open(this.options[selectedIndex].value,'_self') >
<%y=1
do while y<pagecount+1%>
<OPTION value=?page=<%=y%>&keyword=<%=server.URLEncode(keyword)%> <%if cstr(page)=cstr(y) then response.Write(" selected") end if%> >第<%=y%>页</OPTION>
<%y=y+1
loop%>
</SELECT></td>
</tr>
</table>