广

ASP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    多字段模糊搜索的函数

    2018-05-16 07:53:58 次阅读 稿源:互联网
    零七广告
    前段时间写了一个多字段模糊搜索的函数(类似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/bloghttp://img.warting.com/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 style="text-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" style="text-align:center" cellpadding="4">
     <tr style="text-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 style="text-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 style="text-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>

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告