얼마 전 나는 다중 필드 퍼지 검색 기능(baidui와 유사)을 작성했습니다. 함수 코드는 다음과 같습니다
'================================================ = =
'함수 이름: 키워드_sousuo
'기능: SQL 쿼리 조건 생성
'매개변수: table_field ------ 테이블의 필드 이름(쉼표로 구분)
' 키워드 ------ 검색 키워드(공백으로 구분)
'반환: SQL 쿼리 조건
'================================================ = =
함수 키워드_sousuo(byval table_field,byval 키워드)
희미한 str01,str02,keywords,table_fields,i,j
table_fields=split(trim(table_field),,)
키워드=분할(트림(키워드),,)
table_field<>이면
str01=(&table_fields(0)& like '%&keyword&%'
j=0에서 ubound(table_fields)까지
str01=str01& 또는 &table_fields(j)& like '%&keyword&%'
다음
str01=str01&)
또 다른
response.Write(<script>alert('매개변수 오류(비워둘 수 없음)!')</script>)
응답.끝()
종료하면
'전각 -> 반각 공백
'키워드=교체(키워드, , )
'InStr(키워드, )>0인 동안
' 키워드=교체(키워드, , )
'향하게 하다
키워드=분할(키워드, )
ubound(keywords)>0이면
i=0에서 ubound(키워드)까지
str02=str02&(&table_fields(0)& like '%&keywords(i)&%'
j=1에서 ubound(table_fields)까지
str02=str02& 또는 &table_fields(j)& like '%&keywords(i)&%'
다음
str02=str02&)
다음
str02=(&replace(str02,)(,)and()&)
키워드_sousuo=( & str01 & 또는 & str02 & )
또 다른
키워드_sousuo=str01
종료하면
종료 기능
'================================================ = =
'함수 이름: 키워드_태그
'기능: 문자열의 키워드를 빨간색으로 표시
'매개변수: str ------ 문자열
' 키워드 ------ 키워드 표시(공백으로 구분)
'반환: 문자열(html 형식)
'================================================ = =
함수 키워드_태그(byval str,byval 키워드)
희미한 키워드,str01,str02,i
'전각 -> 반각 공백
'키워드=교체(키워드, , )
'InStr(키워드, )>0인 동안
' 키워드=교체(키워드, , )
'향하게 하다
str01=교체(str,키워드,<font color=#ff0000>&키워드&</font>)
키워드=분할(키워드, )
ubound(keywords)>0이면
str02=str
i=0에서 ubound(키워드)까지
str02=replace(str02,keywords(i),<font color=#ff0000>&keywords(i)&</font>)
다음
키워드_태그=str02
또 다른
키워드_태그=str01
종료하면
종료 기능
다음은 예입니다 http://www.zhouhaihe.com/blog/uploads/200604/recordread.asp
<%@LANGUAGE=VBSCRIPT 코드페이지=936%>
<%
명시적인 옵션
희미한 연결, 연결, 데이터베이스
connstr=DBQ=+server.mappath(record.mdb)+;DefaultDir=;DRIVER={Microsoft Access Driver(*.mdb)};
conn=server.CreateObject(adodb.connection) 설정
conn.open 연결
희미한 n,rs,페이지,키워드,키워드,레코드카운트,페이지카운트,pos,i,sql_where
n=50
page=요청(페이지)
키워드=트림(요청(키워드))
sql_where=keyword_sousuo(제목,cz,이름,시간,키워드)
rs=server.CreateObject(adodb.recordset) 설정
rs.open id desc,conn,1,2로 &sql_where& 주문한 레코드에서 *를 선택합니다.
페이지=0이면
페이지=1
종료하면
레코드 개수 = 0
rs.Eof가 아닌 동안 수행
레코드카운트 = 레코드카운트 +1
rs.이동다음
고리
RecordCount=0이 아니면
rs.MoveFirst
종료하면
pageCount=레코드 수/n
페이지카운트=int(페이지카운트)
(RecordCount mod n)>0이면
페이지카운트=페이지카운트 +1
종료하면
%>
<스타일 유형=텍스트/css>
<!--
.STYLE3 {색상: #666666}
-->
</style>
<테이블 너비=100% 테두리=0 셀 간격=0 셀 패딩=0>
<form id=form1 name=form1 method=post action=?><tr><td align=center><input name=keyword type=text id=keyword value=<%=keyword%> size=30 />
<입력 유형=제출 이름=제출 값=검색/>
<span class=STYLE3>(키워드를 공백으로 구분) </span></td>
</tr></form>
<tr>
<td 높이=5></td>
</table>
<테이블 너비=600 테두리=1 정렬=가운데 셀패딩=4>
<tr 정렬=가운데>
<td width=131>제목</td>
<td width=131>액션</td>
<td width=131>사용자 이름</td>
<td width=132>시간</td>
</tr>
<%pos=0
pos<(page-1)*n 동안 수행
위치=위치+1
rs.moveNext
고리
나는=0
rs.eof 및 i<n이 아닌 동안
나는=나는+1%>
<tr 정렬=가운데>
<td><%=keyword_tag(rs(제목),키워드)%></td>
<td><%=keyword_tag(rs(cz),키워드)%></td>
<td><%=keyword_tag(rs(이름),키워드)%></td>
<td><%=keyword_tag(rs(time),keyword)%></td>
</tr>
<%rs.movenext
향하게 하다
RS.닫기
rs=아무것도 설정하지 않음
연결 닫기
conn=아무것도 설정하지 않음
'================================================ = =
'함수 이름: 키워드_sousuo
'기능: SQL 쿼리 조건 생성
'매개변수: table_field ------ 테이블의 필드 이름(쉼표로 구분)
' 키워드 ------ 검색 키워드(공백으로 구분)
'반환: SQL 쿼리 조건
'================================================ = =
함수 키워드_sousuo(byval table_field,byval 키워드)
희미한 str01,str02,keywords,table_fields,i,j
table_fields=split(trim(table_field),,)
키워드=분할(트림(키워드),,)
table_field<>이면
str01=(&table_fields(0)& like '%&keyword&%'
j=0에서 ubound(table_fields)까지
str01=str01& 또는 &table_fields(j)& like '%&keyword&%'
다음
str01=str01&)
또 다른
response.Write(<script>alert('매개변수 오류(비워둘 수 없음)!')</script>)
응답.끝()
종료하면
'전각 -> 반각 공백
키워드=교체(키워드, , )
' while InStr(키워드, )>0
' 키워드=교체(키워드, , )
'향하게 하다
키워드=분할(키워드, )
ubound(keywords)>0이면
i=0에서 ubound(키워드)까지
str02=str02&(&table_fields(0)& like '%&keywords(i)&%'
j=1에서 ubound(table_fields)까지
str02=str02& 또는 &table_fields(j)& like '%&keywords(i)&%'
다음
str02=str02&)
다음
str02=(&replace(str02,)(,)and()&)
키워드_sousuo=( & str01 & 또는 & str02 & )
또 다른
키워드_sousuo=str01
종료하면
종료 기능
'================================================ = =
'함수 이름: 키워드_태그
'기능: 문자열의 키워드를 빨간색으로 표시
'매개변수: str ------ 문자열
' 키워드 ------ 키워드 표시(공백으로 구분)
'반환: 문자열(html 형식)
'================================================ = =
함수 키워드_태그(byval str,byval 키워드)
희미한 키워드,str01,str02,i
'전각 -> 반각 공백
키워드=교체(키워드, , )
'InStr(키워드, )>0인 동안
' 키워드=교체(키워드, , )
'향하게 하다
str01=교체(str,키워드,<font color=#ff0000>&키워드&</font>)
키워드=분할(키워드, )
ubound(keywords)>0이면
str02=str
i=0에서 ubound(키워드)까지
str02=replace(str02,keywords(i),<font color=#ff0000>&keywords(i)&</font>)
다음
키워드_태그=str02
또 다른
키워드_태그=str01
종료하면
종료 기능
어두워
%> <tr 정렬=가운데>
<td colspan=4> <%=RecordCount%><font color=#FF0000><%=page%></font>/<%=pageCount%> 페이지
<%=n%> 페이지/페이지 이동:
<SELECT 이름=선택 onchange=window.open(this.options[selectedIndex].value,'_self') >
<%y=1
y<페이지 수+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
루프%>
</SELECT></td>
</tr>
</table>