标题:[求助]提交搜索 关键字 + 空格 出现问题
只看楼主
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:0 
数据库的表结构是什么?
2006-01-09 22:22
binyanmei
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2005-12-20
得分:0 
是不是搜索表单的名字没改,名字也改成一样的试试
2006-01-12 10:36
dpxdpx
Rank: 1
等 级:新手上路
帖 子:230
专家分:0
注 册:2005-11-22
得分:0 
以下是引用islet在2006-1-6 7:42:00的发言:
key1=split(key," ")
sql="select * from news where title like '%"&key&"%'"
for i=0 to ubound(key)
sql=sql&" or title like '%"&key1(i)&"%'"
next

这样就可以了
key=request("key")
key1=split(key," ")
sql="select * from news where title like '%"&key(0)&"%'"
for i=1 to ubound(key1)
sql=sql&" or title like '%"&key1(i)&"%'"
next


从不懂到懂点点到有点懂到懂点了到想搞懂更多到问题更多了到不懂的更多了到编程论坛请教大家来了!
2006-01-12 10:41
zmw5112
Rank: 1
等 级:新手上路
帖 子:171
专家分:0
注 册:2005-12-11
得分:0 
回复:(dpxdpx)以下是引用islet在2006-1-6 7:42:00的...

我搜索页面是这样写的:

<form action="product_search.asp" method="post" name="form2"><td height="16" colspan="2" align="center">
<font class="r12">快速查找:
<input name="keyword" type="text" size="20" maxlength="50"></font><input name="搜 索" type="submit" id="搜 索" value="搜 索" /></td>
</form>

处理搜索product_search.asp是这样:

<%
if len(request("keyword"))=0 then
response.write("请填写关键字!!")
Response.end
end if
keyword=request("keyword")%>

<%
key1=split(key," ")
strsql="select * from camera where camera_name like '%"&keyword&"%' or camera_model like '%"&keyword&"%' or camera_int like '%"&keyword&"%'"
for i=0 to ubound(key1)
strsql=strsql&" or camera_name like '%"&key1(i)&"%'' or camera_model like '%"&key1(i)&"%' or camera_int like '%"&key1(i)&"%'"
next

set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strsql, conn, 1, 1
total=0
total=rs.recordcount
while not rs.eof %>

现在输入关键字是能搜索到的,也能列表,只要在输入关键字的时候加上空格然后再加几个字就不行了,说明:即使数据记录中完全符合 关键字 空格 关键字 也不行,不知道怎样处理,我知道我的代码很有问题,但研究去研究来也不行,功力太浅,还希望各位帮助,谢谢

2006-01-13 18:42
adleyliu
Rank: 1
等 级:新手上路
帖 子:146
专家分:0
注 册:2005-5-8
得分:0 
以下是引用zmw5112在2006-1-13 18:42:00的发言:

我搜索页面是这样写的:

<form action="product_search.asp" method="post" name="form2"><td height="16" colspan="2" align="center">
<font class="r12">快速查找:
<input name="keyword" type="text" size="20" maxlength="50"></font><input name="搜 索" type="submit" id="搜 索" value="搜 索" /></td>
</form>

处理搜索product_search.asp是这样:

<%
if len(request("keyword"))=0 then
response.write("请填写关键字!!")
Response.end
end if
keyword=request("keyword")%>

<%
key1=split(key," ")
strsql="select * from camera where camera_name like '%"&keyword&"%' or camera_model like '%"&keyword&"%' or camera_int like '%"&keyword&"%'"
for i=0 to ubound(key1)
strsql=strsql&" or camera_name like '%"&key1(i)&"%'' or camera_model like '%"&key1(i)&"%' or camera_int like '%"&key1(i)&"%'"
next

set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strsql, conn, 1, 1
total=0
total=rs.recordcount
while not rs.eof %>

现在输入关键字是能搜索到的,也能列表,只要在输入关键字的时候加上空格然后再加几个字就不行了,说明:即使数据记录中完全符合 关键字 空格 关键字 也不行,不知道怎样处理,我知道我的代码很有问题,但研究去研究来也不行,功力太浅,还希望各位帮助,谢谢

你还没解决这个问题?你仔细找找,

response.write strsql 看看它打印出来的东西是什么?


易点通WEB源http://www..cn/ QQ:14339095 E-mail:adleyliu@
2006-01-13 19:04
zmw5112
Rank: 1
等 级:新手上路
帖 子:171
专家分:0
注 册:2005-12-11
得分:0 

我改成 key1=split(keyword," ")出现:


技术信息(用于支持人员)

  • 错误类型:
    Microsoft JET Database Engine (0x80040E14)
    语法错误 在查询表达式 'camera_name like '%1%' or camera_model like '%1%' or camera_int like '%1%' or camera_name like '%1%'' or camera_model like '%1%' or camera_int like '%1%'' 中。
    /product/product_search.asp, 第 50 行rs.Open strsql, conn, 1, 1

  • 浏览器类型:
    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

  • 网页:
    POST 39 ??? /product/product_search.asp

  • POST Data:
    keyword=1&%CB%D1++%CB%F7=%CB%D1++%CB%F7

这个我以前试过了

2006-01-13 20:59
zmw5112
Rank: 1
等 级:新手上路
帖 子:171
专家分:0
注 册:2005-12-11
得分:0 

改成这样倒是不报错,就是加个空格后什么也搜不到

<%
if len(request("keyword"))=0 then
response.write("请填写关键字!!")
Response.end
end if
key=request("keyword")


%>
<%
key1=split(keyword," ")
strsql="select * from camera where camera_name like '%"&key&"%' or camera_model like '%"&key&"%' or camera_int like '%"&key&"%'"

for i=1 to ubound(key1)
strsql=strsql&" or camera_name like '%"&key1(i)&"%'' or camera_model like '%"&key1(i)&"%' or camera_int like '%"&key1(i)&"%'"
next

set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strsql, conn, 1, 1
total=0
total=rs.recordcount
while not rs.eof %>

[此贴子已经被作者于2006-1-13 21:28:34编辑过]

2006-01-13 21:27
adleyliu
Rank: 1
等 级:新手上路
帖 子:146
专家分:0
注 册:2005-5-8
得分:0 
在运行不出错误的情况下

把strsql打印出来,看它是什么情况

response.write strsql


camera_name camera_model camera_int 这些字段一个一个试,看问题出在哪里,

你要学会诊断问题!

易点通WEB源http://www..cn/ QQ:14339095 E-mail:adleyliu@
2006-01-13 21:42
zmw5112
Rank: 1
等 级:新手上路
帖 子:171
专家分:0
注 册:2005-12-11
得分:0 

非常感谢您的指点,一个个试的结果和一起试的结果一样,比如说我数据库中有这样一天记录:sony ccd 高清晰数码摄像机,

我在输入sony时有记录,输入“高清晰”也有记录,输入“高清晰摄像机”没有记录,输入“高清晰数码摄像机”有记录,输入“高清晰 摄像机”没有记录,我就是想输入“高清晰 摄像机”时能搜索得到,就是内容包括“高清晰”和“摄像机”,而不是要“高清晰”和“摄像机”几个字连在一起才能搜到。不好意思,不知是否描述清楚,在问题判断上,我一般是每种情况试一下,代码调换一下,毕竟对ASP了解还不够

2006-01-13 23:29
adleyliu
Rank: 1
等 级:新手上路
帖 子:146
专家分:0
注 册:2005-5-8
得分:0 
你发过来的都是搜索的结果

你要把执行SQL语句的过程发过来看看!response.write strsql

如果SQL语句没有问题,再考虑其它方面问题
比如搜索:留 印

select * from [info] where (title like '%留 印%') or (body like '%留 印%') or (name like '%留 印%') or (title like '%留%') or (body like '%留%') or (name like '%留%') or (title like '%印%') or (body like '%印%') or (name like '%印%')

易点通WEB源http://www..cn/ QQ:14339095 E-mail:adleyliu@
2006-01-14 08:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-41793-1-1.html




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

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