เมื่อไม่นานมานี้ ฉันเขียนฟังก์ชันการค้นหาแบบคลุมเครือหลายฟิลด์ (คล้ายกับ baidui) รหัสฟังก์ชันมีดังนี้
'=================================================' ==
'ชื่อฟังก์ชัน: keyword_sousuo
'ฟังก์ชั่น: สร้างเงื่อนไขการสืบค้น sql'
'พารามิเตอร์: table_field ------ ชื่อฟิลด์ของตาราง (คั่นด้วยเครื่องหมายจุลภาค)
' คำสำคัญ ------ คำค้นหา (คั่นด้วยช่องว่าง)
'ผลตอบแทน: เงื่อนไขการสืบค้น sql'
'=================================================' ==
ฟังก์ชั่น keyword_sousuo (byval table_field, คำหลัก byval)
สลัว str01,str02,คำหลัก,table_fields,i,j
table_fields=split(ตัดแต่ง(table_field),,)
คำหลัก = แยก (ตัดแต่ง (คำหลัก),,)
ถ้า table_field<> แล้ว
str01=(&table_fields(0)& ชอบ '%&คำหลัก&%'
สำหรับ j=0 ถึง ubound(table_fields)
str01=str01& หรือ &table_fields(j)& like '%&keyword&%'
ต่อไป
str01=str01&)
อื่น
response.Write(<script>alert('พารามิเตอร์ผิดพลาด (ไม่สามารถเว้นว่างได้)!')</script>)
การตอบสนองสิ้นสุด()
สิ้นสุดถ้า
'เต็มความกว้าง -> พื้นที่ครึ่งความกว้าง
'คำหลัก=แทนที่(คำหลัก, , )
'ในขณะที่ InStr(คำหลัก, )>0
' คำหลัก=แทนที่(คำหลัก, , )
'เวนด์'
คำหลัก=แยก(คำหลัก, )
ถ้า ubound(คำหลัก)>0 แล้ว
สำหรับ i=0 ถึง ubound (คำหลัก)
str02=str02&(&table_fields(0)& ชอบ '%&คำหลัก(i)&%'
สำหรับ j=1 ถึง ubound(table_fields)
str02=str02& หรือ &table_fields(j)& like '%&keywords(i)&%'
ต่อไป
str02=str02&)
ต่อไป
str02=(&แทนที่(str02,)(,)และ()&)
keyword_sousuo=( & str01 & หรือ & str02 & )
อื่น
keyword_sousuo=str01
สิ้นสุดถ้า
ฟังก์ชั่นสิ้นสุด
'=================================================' ==
'ชื่อฟังก์ชัน: keyword_tag
'ฟังก์ชั่น: ทำเครื่องหมายคำสำคัญในสตริงด้วยสีแดง'
'พารามิเตอร์: str ------ สตริง
' คำหลัก ------ ทำเครื่องหมายคำหลัก (คั่นด้วยช่องว่าง)
'ส่งคืน: สตริง (รูปแบบ html)
'=================================================' ==
ฟังก์ชั่น keyword_tag (byval str, คำหลัก byval)
คำหลักสลัว str01, str02, i
'เต็มความกว้าง -> พื้นที่ครึ่งความกว้าง
'คำหลัก=แทนที่(คำหลัก, , )
'ในขณะที่ InStr(คำหลัก, )>0
' คำหลัก=แทนที่(คำหลัก, , )
'เวนด์'
str01=แทนที่(str,คำหลัก,<font color=#ff0000>&คำหลัก&</font>)
คำหลัก=แยก(คำหลัก, )
ถ้า ubound(คำหลัก)>0 แล้ว
str02=str
สำหรับ i=0 ถึง ubound (คำหลัก)
str02=replace(str02,คำหลัก(i),<font color=#ff0000>&keywords(i)&</font>)
ต่อไป
keyword_tag=str02
อื่น
keyword_tag=str01
สิ้นสุดถ้า
ฟังก์ชั่นสิ้นสุด
ต่อไปนี้เป็นตัวอย่างhttp://www.zhouhaihe.com/blog/uploads/200604/recordread.asp
<%@LANGUAGE=รหัส VBSCRIPT=936%>
-
ตัวเลือกที่ชัดเจน
dim conn, connstr, ฐานข้อมูล
connstr=DBQ=+server.mappath(record.mdb)+;DefaultDir=;DRIVER={ไดรเวอร์ Microsoft Access (*.mdb)};
ตั้งค่า conn=server.CreateObject (adodb.connection)
conn.open constr
สลัว n, rs, หน้า, คำหลัก, คำหลัก, RecordCount, pageCount, pos, i, sql_where
n=50
หน้า=คำขอ(หน้า)
คำหลัก = ตัด (คำขอ (คำหลัก))
sql_where=keyword_sousuo(หัวเรื่อง,cz,ชื่อ,เวลา,คำหลัก)
ตั้งค่า rs = server.CreateObject (adodb.recordset)
rs.open เลือก * จากบันทึกโดยที่ &sql_where& สั่งซื้อตาม id desc,conn,1,2
ถ้าหน้า = 0 แล้ว
หน้า=1
สิ้นสุดถ้า
จำนวนระเบียน = 0
ทำในขณะที่ไม่ใช่ rs.Eof
RecordCount = จำนวนบันทึก +1
rs.MoveNext
วนซ้ำ
ถ้าไม่ใช่ RecordCount=0 แล้ว
rs.MoveFirst
สิ้นสุดถ้า
pageCount=จำนวนระเบียน/n
pageCount=int(จำนวนหน้า)
ถ้า (RecordCount mod n)>0 แล้ว
PageCount=จำนวนหน้า +1
สิ้นสุดถ้า
-
<ประเภทสไตล์=ข้อความ/css>
-
.STYLE3 {สี: #666666}
-
</สไตล์>
<ความกว้างของตาราง=เส้นขอบ 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></รูปแบบ>
<tr>
<td ความสูง=5></td>
</ตาราง>
<ความกว้างของตาราง=600 เส้นขอบ=1 align=เซลล์แพดดิ้งตรงกลาง=4>
<tr align=center>
<td width=131>ชื่อเรื่อง</td>
<td width=131>การกระทำ</td>
<td width=131>ชื่อผู้ใช้</td>
<td width=132>เวลา</td>
</tr>
<%โพส=0
ทำในขณะที่ pos<(page-1)*n
ตำแหน่ง=ตำแหน่ง+1
rs.moveNext
วนซ้ำ
ผม=0
ในขณะที่ไม่ใช่ rs.eof และ i<n
i=i+1%>
<tr align=center>
<td><%=keyword_tag(rs(title),keyword)%></td>
<td><%=keyword_tag(rs(cz),คำหลัก)%></td>
<td><%=keyword_tag(rs(name),keyword)%></td>
<td><%=keyword_tag(rs(เวลา),คำหลัก)%></td>
</tr>
<%rs.movenext
เวน
RS.ปิด
ตั้งค่า rs=nothing
เชื่อมต่อปิด
ตั้งค่า conn=ไม่มีอะไร
'=================================================' ==
'ชื่อฟังก์ชัน: keyword_sousuo
'ฟังก์ชั่น: สร้างเงื่อนไขการสืบค้น sql'
'พารามิเตอร์: table_field ------ ชื่อฟิลด์ของตาราง (คั่นด้วยเครื่องหมายจุลภาค)
' คำสำคัญ ------ คำค้นหา (คั่นด้วยช่องว่าง)
'ผลตอบแทน: เงื่อนไขการสืบค้น sql'
'=================================================' ==
ฟังก์ชั่น keyword_sousuo (byval table_field, คำหลัก byval)
สลัว str01,str02,คำหลัก,table_fields,i,j
table_fields=split(ตัดแต่ง(table_field),,)
คำหลัก = แยก (ตัดแต่ง (คำหลัก),,)
ถ้า table_field<> แล้ว
str01=(&table_fields(0)& ชอบ '%&คำหลัก&%'
สำหรับ j=0 ถึง ubound(table_fields)
str01=str01& หรือ &table_fields(j)& like '%&keyword&%'
ต่อไป
str01=str01&)
อื่น
response.Write(<script>alert('พารามิเตอร์ผิดพลาด (ไม่สามารถเว้นว่างได้)!')</script>)
การตอบสนองสิ้นสุด()
สิ้นสุดถ้า
'เต็มความกว้าง -> พื้นที่ครึ่งความกว้าง
คำหลัก = แทนที่ (คำหลัก, , )
' ในขณะที่ InStr(คำหลัก, )>0
' คำหลัก=แทนที่(คำหลัก, , )
'เวนด์'
คำหลัก=แยก(คำหลัก, )
ถ้า ubound(คำหลัก)>0 แล้ว
สำหรับ i=0 ถึง ubound (คำหลัก)
str02=str02&(&table_fields(0)& ชอบ '%&คำหลัก(i)&%'
สำหรับ j=1 ถึง ubound(table_fields)
str02=str02& หรือ &table_fields(j)& like '%&keywords(i)&%'
ต่อไป
str02=str02&)
ต่อไป
str02=(&แทนที่(str02,)(,)และ()&)
keyword_sousuo=( & str01 & หรือ & str02 & )
อื่น
keyword_sousuo=str01
สิ้นสุดถ้า
ฟังก์ชั่นสิ้นสุด
'=================================================' ==
'ชื่อฟังก์ชัน: keyword_tag
'ฟังก์ชั่น: ทำเครื่องหมายคำสำคัญในสตริงด้วยสีแดง'
'พารามิเตอร์: str ------ สตริง
' คำหลัก ------ ทำเครื่องหมายคำหลัก (คั่นด้วยช่องว่าง)
'ส่งคืน: สตริง (รูปแบบ html)
'=================================================' ==
ฟังก์ชั่น keyword_tag (byval str, คำหลัก byval)
คำหลักสลัว str01, str02, i
'เต็มความกว้าง -> พื้นที่ครึ่งความกว้าง
คำหลัก = แทนที่ (คำหลัก, , )
'ในขณะที่ InStr(คำหลัก, )>0
' คำหลัก=แทนที่(คำหลัก, , )
'เวนด์'
str01=แทนที่(str,คำหลัก,<font color=#ff0000>&คำหลัก&</font>)
คำหลัก=แยก(คำหลัก, )
ถ้า ubound(คำหลัก)>0 แล้ว
str02=str
สำหรับ i=0 ถึง ubound (คำหลัก)
str02=replace(str02,คำหลัก(i),<font color=#ff0000>&keywords(i)&</font>)
ต่อไป
keyword_tag=str02
อื่น
keyword_tag=str01
สิ้นสุดถ้า
ฟังก์ชั่นสิ้นสุด
สลัว y
%> <tr align=center>
<td colspan=4> <%=RecordCount%><font color=#FF0000><%=page%></font>/<%=pageCount%> หน้า
<%=n%> หน้า/หน้า ไปที่:
<ชื่อเลือก=เลือก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) ดังนั้น response.Write( Selected) end if%> > หน้า <%=y%></OPTION>
<%y=y+1
วนซ้ำ%>
</SELECT></td>
</tr>
</ตาราง>