美版s7edge刷基带教程:ASP建立站内信息搜索系统

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 18:54:44

假如你拥有一个庞大的网站,内容又多,那么来访者往往很难找到自己所需要的东东,这时候你就需要一个站内搜索来帮助来访者更快的找到索要的资料了!现在你就可以用asp轻易的实现这种功能,何况现在支持asp的站点这么多,利用这个搜索引擎可以搜索到你的主页里面任何一个文件或者软件资料,它可以精确到每个字!说了这么多你是不是怦然心动了啊,那就按照下面的步骤来建立自己的搜索引擎吧:

  (一),首先利用access97建立一个名为list.mdb的数据库,在里面建立一个名为list的表,然后在list表里面输入一些你想要被查询的文件名字,关键的搜索词还有相对应的链接,下面建立了四个项目ID(编号),title(主题),word(关键词),url(链接地址),如下表所示:

ID title word url 1 cgi教程 本地调试cgi cgi/testcgi.htm 2 下载中心 聊天室,留言本 download/index.htm

id                      title                   word                         url
1                   cgi教程             本地调试cgi            cgi/testcgi.html2              下载中心聊天室,留言本                download/index.htm

 

ID title word url 1 cgi教程 本地调试cgi cgi/testcgi.htm 2 下载中心 聊天室,留言本 download/index.htm

 


  (二),建立了数据库以后就可以建立你的asp搜索页面了,下面是一个文件名为search.htm的asp搜索页面的源程序,这个搜索引擎可以同时搜索title和word里面的内容,当然如果你有需要的话可以建立更多的搜索:
<!--#INCLUDE file="ADOVBS.inc"-->
<% "建立数据库的连接
 con="DBQ="+server.mappath("list.mdb")+";DefaultDir=;DIRVER={microsoft Access Driver(*.mdb)};"
 "建立CONNECTION对象并打开数据库
 set mycon=server.createobject("ADODB.CONNECTION")
 mycon.open.con %>
 "创建Recordset对象的例程,打开Recordset对象传递SQL串以及所有的连接信息
 <% set rs=server.createobject("ADODB.Recordset")
  rs.open "SELECT*FORM list where title and word like  '%'&request.form("word")&"%'",MyCon,adOpenStatie
 %>
 "建立查询后的显示信息和查询页面,你想取什么名字都可以
 <html><head><title>查询结果</title></head>
 <body bgcolor="#ffffff">
 <p align="center"><br>
  "统计查询共有<% Response.Write(RS.RecordCount) %>条纪录</p><br>
 <div align="center"><center>
 <table border="1" align="center" bordercolor="000000" berdorcoorlight="#000000"   bordercolordark="#ffffff">
 <tr align="center">
  <td width="20%" align="center" bgcolor="#ffffff">ID</td>
  <td width="60%" align="center" bgcolor="#ffffff">主题</td>
  <td width="20%" align="center" bgcolor="#ffffff">查看</td></table>
  <table border="1" align="center" bordercolor="000000" berdorcoorlight="#000000" bordercolordark="#ffffff">
   <tr align="center">
    <!--从数据库提取信息-->
    <% while not rs.eof %>
   <tr align="center">
    <td width="20%" align="center" bgcolor="#ffffff"><% =rs("id") %></td>
    <td width="60%" align="center" bgcolor="#ffffff"><% =rs("title") %></td>
    <td width="20%" align="center" bgcolor="#ffffff"><a href="<% =rs("url")   %>">GO</a></td>
  <% rs.movenext %></tr> <% wend %></table></center></div>
  <% rs.close %>
  <% mycon.close %>
   "关闭链接
</body></html>


 

<!--#INCLUDE file="ADOVBS.inc"-->
<% "建立数据库的连接
 con="DBQ="+server.mappath("list.mdb")+";DefaultDir=;DIRVER={microsoft Access Driver(*.mdb)};"
 "建立CONNECTION对象并打开数据库
 set mycon=server.createobject("ADODB.CONNECTION")
 mycon.open.con %>
 "创建Recordset对象的例程,打开Recordset对象传递SQL串以及所有的连接信息
 <% set rs=server.createobject("ADODB.Recordset")
  rs.open "SELECT*FORM list where title and word like  '%'&request.form("word")&"%'",MyCon,adOpenStatie
 %>
 "建立查询后的显示信息和查询页面,你想取什么名字都可以
 <html><head><title>查询结果</title></head>
 <body bgcolor="#ffffff">
 <p align="center"><br>
  "统计查询共有<% Response.Write(RS.RecordCount) %>条纪录</p><br>
 <div align="center"><center>
 <table border="1" align="center" bordercolor="000000" berdorcoorlight="#000000"   bordercolordark="#ffffff">
 <tr align="center">
  <td width="20%" align="center" bgcolor="#ffffff">ID</td>
  <td width="60%" align="center" bgcolor="#ffffff">主题</td>
  <td width="20%" align="center" bgcolor="#ffffff">查看</td></table>
  <table border="1" align="center" bordercolor="000000" berdorcoorlight="#000000" bordercolordark="#ffffff">
   <tr align="center">
    <!--从数据库提取信息-->
    <% while not rs.eof %>
   <tr align="center">
    <td width="20%" align="center" bgcolor="#ffffff"><% =rs("id") %></td>
    <td width="60%" align="center" bgcolor="#ffffff"><% =rs("title") %></td>
    <td width="20%" align="center" bgcolor="#ffffff"><a href="<% =rs("url")   %>">GO</a></td>
  <% rs.movenext %></tr> <% wend %></table></center></div>
  <% rs.close %>
  <% mycon.close %>
   "关闭链接
 </body></html>

 


  下面我们来建立搜索页面
<html><head><title>搜索页面</title></head>
<!--创建搜索表格-->
<from method="POST" action="search.asp">
<div align="center"><center><p><input type="text" name="word" size="30">
<input type="submit" value="提交" name="B1"><input type="reset" value="清除" name="B2"></p>
</center></div></form>
<hr width="600" align="center">
<html>

 

<html><head><title>搜索页面</title></head>
<!--创建搜索表格-->
<from method="POST" action="search.asp">
<div align="center"><center><p><input type="text" name="word" size="30">
<input type="submit" value="提交" name="B1"><input type="reset" value="清除" name="B2"></p>
</center></div></form>
<hr width="600" align="center">
<html>

 


  好了,这个站内搜索引擎到这里就算完成了,你接下来要做的就是吧东西输入数据库了!

                                 第 10 页 ASP万用分页程序

这只是个asp小技巧类的东西,它虽然适合在每个不同文件名里调用这个函数,但是也是有前提的,下面让我们来仔细看看其中的原委。

  下面这段是基本的分页代码:
<% sql = "select……………………省略了sql语句
 Set rs=Server.Createobject("ADODB.RECORDSET")
 rs.Open sql, conn, 1, 1
 if not rs.eof then
  pages = 30 ’定义每页显示的记录数
  rs.pageSize = pages ’定义每页显示的记录数
  allPages = rs.pageCount’计算一共能分多少页
  page = Request.QueryString("page")’通过浏览器传递的页数
  ’if语句属于基本的排错处理
  if isEmpty(page) or Cint(page) < 1 then
   page = 1
  elseif Cint(page) > allPages then
   page = allPages
  end if
  rs.AbsolutePage = page
  Do while not rs.eof and pages > 0 %>
   这里输出你要的内容………………
   <% pages = pages - 1
   rs.MoveNext
  Loop
 else
  Response.Write("数据库暂无内容!")
 End if
 rs.Close
 Set rs = Nothing %>

<% sql = "select……………………省略了sql语句
 Set rs=Server.Createobject("ADODB.RECORDSET")
 rs.Open sql, conn, 1, 1
 if not rs.eof then
  pages = 30 ’定义每页显示的记录数
  rs.pageSize = pages ’定义每页显示的记录数
  allPages = rs.pageCount’计算一共能分多少页
  page = Request.QueryString("page")’通过浏览器传递的页数
  ’if语句属于基本的排错处理
  if isEmpty(page) or Cint(page) < 1 then
   page = 1
  elseif Cint(page) > allPages then
   page = allPages
  end if
  rs.AbsolutePage = page
  Do while not rs.eof and pages > 0 %>
   这里输出你要的内容………………
   <% pages = pages - 1
   rs.MoveNext
  Loop
 else
  Response.Write("数据库暂无内容!")
 End if
 rs.Close
 Set rs = Nothing %>
  系统已经为数据分页了,下面就看看这次探讨的关键问题分页函数的定义
<% SUB pageUrl(pUrl)
 Dim eUrl
 txts = Request.ServerVariables("URL")
 txts = left(txts,instrrev(txts,"/",len(txts))-1)
 eUrl = "http://"; & Request.ServerVariables("server_name") & txts
 For i =1 to allpages
  txt = ""
  txt = "<strong>"
  txt = txt & "<a href=" & eUrl & pUrl & "page="&i & ">"
  if i = Cint(Page) then txt = txt & "<font color=’bb0000’>"
   txt = txt & (i)
   if i = Cint(Page) then txt = txt & "</font>"
    txt = txt & "</a> ∥ </strong>"
    Response.Write(txt)
 Next
END sub %>
<% SUB pageUrl(pUrl)
 Dim eUrl
 txts = Request.ServerVariables("URL")
 txts = left(txts,instrrev(txts,"/",len(txts))-1)
 eUrl = "http://"; & Request.ServerVariables("server_name") & txts
 For i =1 to allpages
  txt = ""
  txt = "<strong>"
  txt = txt & "<a href=" & eUrl & pUrl & "page="&i & ">"
  if i = Cint(Page) then txt = txt & "<font color=’bb0000’>"
   txt = txt & (i)
   if i = Cint(Page) then txt = txt & "</font>"
    txt = txt & "</a> ∥ </strong>"
    Response.Write(txt)
 Next
END sub %>
  把上面这个分页函数代码COPY存成一个ASP文件,在需要使用的页面里用include来引入他调用的时候只要 Call("/你调用的文件名?")就ok了,比如我的 news页面里要调用那么就是<%Call("/news.asp?")%>
刚才我们所到这是有限制的意思就是说第一段代码里除了sql查询内容和输出内容可以更改,其他的声明记录集的对象,page, pages, allpages这些变量都不能更改,否则将无法运行~其实这个程序是无关紧要的,最主要的就是,这个分页函数可以在任何一个asp叶面里调用。分页做的还不漂亮,高手们可以修改修改,能发给我的话我会负责给您发表出来!