账号通
    

账号  

密码  

3258

查看

11

回复
主题:求助 V4.5 搜索的修改 [收藏主题] 转到:  
gxda112 当前离线

194

主题

1

广播

2

粉丝
添加关注
级别:一年级

用户积分:4384 分
登录次数:295 次
注册时间:2007/7/30
最后登录:2016/12/15
gxda112 发表于:2007/12/24 15:48:00   | 显示全部帖子 查看该作者主题 楼主 
科汛在线商城系统(NET)

给楼主两个函数,自己修改搜索代码吧。这是我开发的一个系统中用到的。用空格模糊匹配多个关键词,用+号同时匹配多个关键词。两个可以同时使用。

function keyword(str)
arrstr=split(str," ") '将输入的字符串根据空格分开,获得一个数组
max=ubound(arrstr) '得出这个数组的维数,即输入的关键字个数

if max=0 then '如果max等于0说明只输入了一个关键字,那么就不需要循环处理
sql1=sql1&" 节目名称 like '%" & replace(arrstr(i),"+","%") & "%' " '节目名称模糊搜索
else '如果含有多个关键字,采用循环处理sql语句
for i=0 to max '如果关键字很多,我们要求每一个搜索都要匹配每一个关键字,通过循环来实现
if i=0 then '写入下面sql语句作为开头,仔细研究一下下面的代码
sql1=sql1&" 节目名称 like '%" & replace(arrstr(i),"+","%") & "%' or " '节目名称模糊搜索

else
if i=max then '如果循环到最后一个关键字,写入下面sql语句作为结尾

sql1=sql1&" 节目名称 like '%" & replace(arrstr(i),"+","%") & "%' " '节目名称模糊搜索

else '如果关键自己不是开头的也不是结尾的,那么循坏写入下面的sql语句

sql1=sql1&" 节目名称 like '%" & replace(arrstr(i),"+","%") & "%' or " '节目名称模糊搜索
end if
end if
next '循环结束
end if
sql=sql&" and ("&sql1&")"
keyword=sql
end function
function redword(str,vt) '将查询的关键字红色输出
if str="" then
redword=vt
exit function
end if
str=replace(str,"+"," ")
arrstr1=split(str," ") '将输入的字符串根据空格分开,获得一个数组
max=ubound(arrstr1) '得出这个数组的维数,即输入的关键字个数
for i=0 to max
vt=replace(vt,arrstr1(i),"<font color=red>"&arrstr1(i)&"</font>")
next
redword=vt
end function

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行0.06201秒 powered by KesionCMS 9.0