| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 729 人关注过本帖
标题:站内搜索
只看楼主 加入收藏
awke002
Rank: 2
等 级:论坛游民
帖 子:201
专家分:55
注 册:2008-7-22
收藏
 问题点数:0 回复次数:6 
站内搜索
这段代码是一个站内搜索的代码,有两部分组成一个下拉列表和一个文本框。没有报错,但就是不能根据文本框的值来查询!
    这段代码为什么不能根据文本框里填的关键字来充当判断条件呢
每次起作用的只有下拉列表的值。
能帮我看看么,是下面的代码出错了还是,有什么地方没有写上!

    <%
      dim search_id,search_text
      search_id= request("searchType")
      select case search_id
      case "0"  search_text="所有类别"
      case "1"  search_text="汽车"
      case "2"  search_text="摄影"
      case "3"  search_text="妇婴"
      case "4"  search_text="时尚"
      case "5"  search_text="培训"
      case "6"  search_text="家居"
      case "7"  search_text="家电"
      case "8"  search_text="家政"
      Case "9"  search_text="物流"
      End Select  

   %>
              
<form id="form1" name="form1" method="post" action="" runat="server">
<table border="0" cellpadding="0" cellspacing="0" bgcolor="" width="720" align="leaf">
   <%
     set rs=server.createobject("adodb.recordset")
     '若用户没有选择类别,则默认选择全部搜索,否则按类别搜索
     if search_text="所有类别" then
    
     sql="select * from shangjia_info where 1=1 and"
    
     '类别被选中的情况下
     else
    
     sql="select  *  from shangjia_info where shangjia_leibie = '" & search_text & "' and"
    
     end if
    
    '定义变量
    dim keyword,keywordlist,search_sql      

         '使用Request 对象的QueryString 方法读取表单文本域中用户输入的关键词    
    keyword=Request("keyword")
    '如果关键字为空
    if keyword="" then
    '搜寻的条件就以列表值的条件为唯一条件,搜寻数据
    search_sql=sql
    'LEN 函数获得字符串的长度,left 函数获得字符串从左边数指定数目的字符
        '在此是去掉字符串中最后几位的"or "
        search_sql=Left(search_sql,(LEN(search_sql)-3))    
    
    '如果关键字不为空的情况
    else
    '获得关键字列表
        '用空格替换关键词中的字符"'"
        keyword = replace(keyword,"'"," ")

        '用空格替换关键词中的字符"["
        keyword = replace(keyword,"["," ")
        
        '用空格替换关键词中的字符"]"    
        keyword = replace(keyword,"]"," ")
        
        '用空格替换关键词中的中文字符","
        keyword = replace(keyword,","," ")    
        
        '用空格替换关键词中的英文字符","
        keyword = replace(keyword,","," ")
        
        '去掉关键词左边和右边的空格,函数LTrim 去掉字符串左边空格,函数RTrim 去掉字符串右边空格
        keyword=ltrim(rtrim(keyword))    
        
        '将用户输入的关键词用空格分成多个关键词并保存在一维数组keywordlist中
        keywordlist=split(keyword)
        '循环将关键字的各部分都加入SQL语句
        for i=0 to ubound(keywordlist)
            'Trim 函数去掉字符串左边和右边函数
            keywordlist(i) = Trim(keywordlist(i))

            'sql 语句,web.title 指的是数据表web 中title 列的值,web.title 中包含关键词keywordlist(i)
            search_sql=searcg_sql &" shangjia_hangye like '%" & keywordlist(i) & "%' or "    
            search_sql=search_sql &" shangjia_leibie like '%" & keywordlist(i) & "%' or "
            search_sql=search_sql &" shangjia_jianjie like '%" & keywordlist(i) & "%' or "
            search_sql=search_sql &" shangjia_dizhi like '%" & keywordlist(i) & "%' or "
        Next
        'LEN 函数获得字符串的长度,left 函数获得字符串从左边数指定数目的字符
        '在此是去掉字符串中最后几位的"or "
        search_sql=Left(search_sql,(LEN(search_sql)-3))    
        end if
        
        rs.open search_sql,conn,1,3
        '不存在记录
        if rs.eof and rs.bof then                            
        
        
        response.Write"<tr><td align='center'>"
        response.Write "目前没有用户记录"      
        response.Write"</td></tr>"    
        
        '存在记录        
         else
'分页代码                                            
        %>

[[it] 本帖最后由 awke002 于 2008-9-17 14:46 编辑 [/it]]
搜索更多相关主题的帖子: 搜索 
2008-09-17 11:34
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
楼主是想问搜索第一次有数据,点击第2页就没有数据了?
2008-09-17 12:07
awke002
Rank: 2
等 级:论坛游民
帖 子:201
专家分:55
注 册:2008-7-22
收藏
得分:0 
不是的,不管是第几次好像是文本框里面的关键字,都不能充当条件啊!
好像起到条件约束作用的只有下拉列表里的值!
2008-09-17 14:23
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
检查一下文本框是否将值传递过来了
2008-09-17 14:29
awke002
Rank: 2
等 级:论坛游民
帖 子:201
专家分:55
注 册:2008-7-22
收藏
得分:0 
值肯定是传过来了。
2008-09-17 15:00
awke002
Rank: 2
等 级:论坛游民
帖 子:201
专家分:55
注 册:2008-7-22
收藏
得分:0 
现在的问题是 sql语句没有理清。 因为报了这样的错误:在关键字 'like' 附近有语法错误。

sql语句的 的写法见上面代码。
我不知道怎么改,有人可以帮我看看么
2008-09-17 15:02
lili0610
Rank: 2
等 级:新手上路
威 望:4
帖 子:197
专家分:0
注 册:2008-4-17
收藏
得分:0 
sql="Select SongName,SingerName,SpName,Region,DownloadsNumber from DownloadsData where"
if music<>"" then sql=sql&" SongName like '%"&music&"%' AND"
if m_name<>"" then sql=sql&" SingerName like '%"&m_name&"%' AND"
if spname<>"" then sql=sql&" SpName like '%"&spname&"%' AND"
if right(sql,5)="WHERE" then sql=left(sql,clng(len(sql))-5) '解决所有参数都为空的情况
        if right(sql,3)="AND" then sql=left(sql,clng(len(sql))-3) '去掉参数最后的and
sql=sql&" ORDER BY DownloadsNumber DESC"

看这个可以满足你不
2008-09-17 16:47
快速回复:站内搜索
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017903 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved