> > leider hab ich dazu gar nichts gefunden und w�re froh wenn
> > ich mir einen
> > Teil der "Handarbeit" ersparen k�nnte.
>
> Ich hab irgendwo sowas noch in classic ASP rumliegen... W�rde
> das helfen?
>
Ob gew�nscht oder nicht... Ich hab's jetzt gefunden und poste es... :-)
Features: AND OR NOT "text zitat" (Klammerung)
Beispiel: (IE AND NOT "Internet Explorer") OR something OR "whatever you
like"
Zus�tzlich kann ein Standardoperator angegeben werden....
Damit man weiss ob folgendes: Alpha Omega
Alpha OR Omega
Oder
Alpha AND Omega
bedeutet...
Achja... Die Felder in denen gesuch werden soll kann man nat�rlich auch
angeben...
So... Here we go....
===================================================
<% option explicit %>
<%
dim fields
fields = split("firstname,lastname,CV",",")
dim res
res = parse(Request("searchStr"),fields,"AND")
%>
<html><body>
<form method="POST">
<input name="searchStr" value="<%=Server.HTMLEncode( Request("searchStr")
)%>">
<input type=submit>
</form>
<b>SELECT * FROM table WHERE</b> <%=res%>
</body></html>
<%
function parse(ByVal searchString,fields,defaultOperator)
dim tokens,i,inString,char,tok,where,wasStr
searchString = searchString & " "
tokens = Array()
inString=false
tok = ""
for i = 1 to len(searchString)
char = mid(searchString,i,1)
select case char
case """"
inString = not inString
if (tok<>"") then tokens=arrayAdd(tokens,tok,not inString) : tok = ""
case "(",")"
if not inString then
if (tok<>"") then tokens=arrayAdd(tokens,tok,false) : tok = ""
tokens = arrayAdd(tokens,char,false)
else
tok = tok & char
end if
case else
if inString or char<>" " then
tok = tok & char
else
if tok<>"" then tokens=arrayAdd(tokens,tok,false) : tok = ""
end if
end select
next
where="" : wasStr = false
for each tok in tokens
select case tok
case "(",")","AND","OR","NOT"
where = where & " " & tok & " "
wasStr = false
case else
if wasStr then where = where & " " & defaultOperator & " "
where = where & " (" & join(fields," LIKE " & tok & " OR ") & " LIKE
" & tok & ") "
wasStr = true
end select
next
parse = where
end function
function arrayAdd(arr,ByVal str,isString)
dim newArr()
dim i
redim newArr(ubound(arr)+1)
for i = 0 to ubound(arr)
newArr(i) = arr(i)
next
if not isString and (ucase(str)="AND" or ucase(str)="OR" _
or ucase(str)="NOT" or str="(" or str=")") then
str = ucase(str)
else
str = "'%" & replace(str,"'","''") & "%'"
end if
newArr(ubound(newArr)) = str
arrayAdd = newArr
end function
%>
Gruss,
Claudius
_______________________________________________
Asp.net Mailingliste, Postings senden an:
[email protected]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/asp.net