webForumDet fria alternativet

Problem med wildcard...

3 svar · 283 visningar · startad av Method

MethodMedlem sedan apr. 2001357 inlägg
#1

Jag har en sökfunktion där jag använder mig av % som jokertecken, det fungerar, men jag har ett pagingscript och då vill jag att sökningen "ligger kvar" när man byter sida men då får jag fel när jag skickar det som QueryString

jag får ett sökresultat först, men sen när jag byter sida och skickar en queristring så skiter det sig...

exempel:

addUser.asp?frmUserSearch=3%25

Får jag i adressfältet och sen i sql står detta:

SELECT * from tblUsers WHERE fld_LoginID <> 1 AND fld_UserName = '3%' ORDER BY fld_LoginID DESC

Hur kommer det sig att det inte fungerar, sen vill jag använda mig av * so jokertecken och då använder jag mig av en regexp

myString = strSearch
				strReplace = "%"
				
				Set objRegExp = New regexp
				objRegExp.Global = true
				objRegExp.IgnoreCase = true
				objRegExp.Pattern = "\*"
				replacestring = objRegExp.Replace(myString, strReplace)

men får inte det att fungera alls...

vad gör jag för fel?

Mvh

Jonas

@ndersMedlem sedan juni 200032 969 inlägg
#2

Re: Problem med wildcard...

Method skrev:

SELECT * from tblUsers WHERE fld_LoginID <> 1 AND fld_UserName = '3%' ORDER BY fld_LoginID DESC

Hur kommer det sig att det inte fungerar

Hur ser sql-frågan ut när det fungerar då?

sen vill jag använda mig av * so jokertecken och då använder jag mig av en regexp

Varför använda sig av regexp för en vanlig replace? Väldigt onödigt.

myString = Replace(strSearch, "*", "%")
MethodMedlem sedan apr. 2001357 inlägg
#3

Regexp kändes lite överflödigt helt klart, jag blev lite småsugen att använda det när jag satt och läste om det *s*

Nu får jag inte något att fungera när jag blandar in * eller %... jag måste ju vara blind... Det finns minst 4 poster i databasen om jag söker på 324234 så om jag söker utan % så får jag ett sökresultat...

Så här ser koden ut

form name="frmSearch" action="<%=strScriptName%>" method="get">
			    <table width="400"  border="0" cellpadding="6" cellspacing="0" bgcolor="#1D4281">
                  <tr>
                    <td width="93">Search user/s:</td>
                    <td width="120"><input name="frmUserSearch" type="text"></td>
                    <td width="151"><input name="btnSearch" type="submit" id="btnSearch" value="Submit"></td>
                  </tr>
				  <tr>
                    <td colspan="3">Use * as a wildcard for partial matches.</td>
                  </tr>
                </table>
			  </form>
			  <%strSearch = Request.QueryString("frmUserSearch")

				strSearch = Replace(strSearch, "*", "%")

								
				If strSearch <> "" Then
					SQL = "SELECT * from tblUsers WHERE fld_LoginID <> 1 AND fld_UserName = '" & strSearch & "' ORDER BY fld_LoginID DESC "
				Else
					SQL = "SELECT * from tblUsers WHERE fld_LoginID <> 1 ORDER BY fld_LoginID DESC "
				End If

Så här ser det ut om man skriver ut SQL

addUser.asp?frmUserSearch=3*

SELECT * from tblUsers WHERE fld_LoginID <> 1 AND fld_UserName = '3%' ORDER BY fld_LoginID DESC

Tack på förhand

Jonas

@ndersMedlem sedan juni 200032 969 inlägg
#4

= säger exakt jämförelse.

Använd LIKE.

140 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)