webForumDet fria alternativet

Sökning

15 svar · 599 visningar · startad av WebbisNet

WebbisNetMedlem sedan feb. 20032 027 inlägg
#1

Jag bygger en sida där man kan söka ex:
jag är [val] som söker [val] och som bor i [val] och som har status [val]

problemet är att jag med denna kod

<%varLan = Request.Form("selCommunity")
varSex = Request.Form("selSex") 'Jag är
varSex1 = Request.Form("selSex1") 'som söker
varInloggad = Request.Form("selInloggad") 'och som bor i
varStatus = Request.Form("selStatus") 'och som har status

if varLan <> "" then

[b]set RS = objConn.Execute("Select distinct * From tblUsers where community = '" & varLan & "' and inloggad = "& varInloggad &" and statusItem = '"& varStatus &"' and Sex = '"& varSex &"' and Sex = '"& varSex1 &"' ORDER BY vip = 1 desc")[/b]

får detta
[MySQL][ODBC 3.51 Driver][mysqld-4.0.25-max]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'and statusItem = 'Söker' and Sex = 'M, M' and Sex = '' ORDER BY

Felande raden är fetmarkerad

WebbisNetMedlem sedan feb. 20032 027 inlägg
#2

Den här delen löste sig, det jag undrar nu är hur man får sökningen att visa medlemmar som är online OCH offlline och inte bara online eller offline

<select class="textbox" name="selInloggad">
<option selected>== Välj ==</option>
<option value="1">Online</option>
<option value="0">Offline</option>
<!--<option value="">Online eller Offline</option>-->
</select>

set rs = objConn.Execute("Select distinct * From tblUsers where community = '" & varLan & "' and inloggad = "& varInloggad &" and statusItem = '"& varStatus &"' and Sex = '"& varSex &"' ORDER BY vip = 1 desc")
WebbisNetMedlem sedan feb. 20032 027 inlägg
#3

När jag skriver ut denna del
set rs = objConn.Execute("Select * From tblUsers where Sex='"& varSex &"' OR community='"& varLan &"' OR statusItem ='"& varStatus &"' OR anvbild ="& varBild &" OR inloggad="& varInloggad &"")

får jag
Select * From tblUsers where Sex='F' OR community='' OR statusItem ='' OR anvbild =1 OR inloggad=

och felmeddelande
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.25-max]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

/Search/detailsearch.asp, line 98

Då jag testade med att inte söka i alla fält så ser det rätt ut men det funkar ändå inte, VAD är fel, Rad 98 är fetmarkerad

WebbisNetMedlem sedan feb. 20032 027 inlägg
#4

ingen som vet hur jag ska kunna söka på vissa fält och inte bara alla

PaceMedlem sedan juni 20019 024 inlägg
#5

Lägg inte till fälten i sql-frågan om de är tomma.

WebbisNetMedlem sedan feb. 20032 027 inlägg
#6

Pace skrev:

Lägg inte till fälten i sql-frågan om de är tomma.

Hur ska man skriva om koden då?

PaceMedlem sedan juni 20019 024 inlägg
#7

Exempel:

Om Request.Form("selSex") inte är tom, lägg till den i sql-satsen efter WHERE-klasulen i stil med "sex = 'värdet' OR ".

Gör likadant med alla variabler. Ta sedan bort de tre sista tecknen från sql-frågan (som kommer att vara " OR").

WebbisNetMedlem sedan feb. 20032 027 inlägg
#8

Ska det vara NULL eller ""

if not Request.Form("selCommunity") = "NULL" then
varLan = Request.Form("selCommunity")
end if

if not Request.Form("selSex") = "NULL" then
varSex = Request.Form("selSex")
end if

if not Request.Form("selStatus") = "NULL" then
varStatus = Request.Form("selStatus")
end if

if not Request.Form("selBild") = "NULL" then
varBild = Request.Form("selBild")
end if

if not Request.Form("selInloggad") = "NULL" then
varInloggad = Request.Form("selInloggad")
end if

PaceMedlem sedan juni 20019 024 inlägg
#9

"" = tom sträng

Null = finns inte

(I alla fall när det gäller objektorientering. Scriptbaserade språk kan vara något mer förlåtande.)

WebbisNetMedlem sedan feb. 20032 027 inlägg
#10

Går ändå inte med denna kod:

<%if not Request.Form("selCommunity") = "" then
varLan = Request.Form("selCommunity")
end if

if not Request.Form("selSex") = "" then
varSex = Request.Form("selSex")
end if

if not Request.Form("selStatus") = "" then
varStatus = Request.Form("selStatus")
end if

if not Request.Form("selBild") = "" then
varBild = Request.Form("selBild")
end if

if not Request.Form("selInloggad") = "" then
varInloggad = Request.Form("selInloggad")
end if%>
</td>
</tr>

<%if request("do")="search" and request("type")="detail" and request("r")="1" then

set rs = objConn.Execute("Select * From tblUsers where Sex='"& varSex &"' OR community='"& varLan &"' OR statusItem ='"& varStatus &"' OR anvbild ="& varBild &" OR inloggad="& varInloggad &"")%>
PaceMedlem sedan juni 20019 024 inlägg
#11

Nja, jag skrev att du ska lägga till den i sql-frågan om värdet är tomt.

Exempel:

foo = Request.Form("formname")

If foo = "" Then
   SqlQuery = SqlQuery & "sex =  '" & foo & "' OR"
End If

... (och likadant med alla formulärfält)

Sedan tar du bort de tre sista tecknen från sql-frågan.

WebbisNetMedlem sedan feb. 20032 027 inlägg
#12

så här har jag aldrig skrivit, sugen på att ge mig ett exempel på hur jag blandar in min objConn.Execute med???

PaceMedlem sedan juni 20019 024 inlägg
#13
Dim SqlQuery
Dim SqlWhereClause

' Bestäm vilka parametrar som ska ingå i frågan.
If Not Request.Form("selCommunity") = "" Then
   SqlWhereClause = " community = '" & Request.Form("selCommunity") & "' OR"
End If

If Not Request.Form("selSex") = "" Then
   SqlWhereClause = " sex = '" & Request.Form("selSex") & "' OR"
End If

...

' Ta bort sista tre tecknen ur frågan.
If SqlWhereClause <> "" Then
   SqlWhereClause = Mid(SqlWhereClause, 0, Len(SqlWhereClause) - 3)
End If

' Bygg ihop WHERE-klausulen i den fullständiga sql-frågan.
SqlQuery = "SELECT * FROM tblUsers WHERE (inloggad = " & varInloggad & ") AND (" & SqlWhereClause & ")"

' Kör frågan.
set rs = objConn.Execute(SqlQuery)
...

Var ett tag sedan jag skrev vbscript så det kan ha smugit in några fel. Dessutom har jag inte lagt in några felkontroller över huvud taget (mot sql injections, när SwlWhereClause är tom etc).

WebbisNetMedlem sedan feb. 20032 027 inlägg
#14

Microsoft VBScript runtime error '800a0005'

Invalid procedure call or argument: 'mid'

SqlQuery = "SELECT * FROM tblUsers WHERE (inloggad = " & varInloggad & ") AND (" & SqlWhereClause & ")"

och hur skriver man färdigt resten av frågan med bild ,sex, status och community
SqlQuery = "SELECT * FROM tblUsers WHERE (inloggad = " & varInloggad & ") AND (" & SqlWhereClause & ")"

PaceMedlem sedan juni 20019 024 inlägg
#15

MidStr kanske det heter i vbscript. Hur som helst så tar funktionen ut de tecken inom ett angivet intervall.

och hur skriver man färdigt resten av frågan med bild ,sex, status och community

Gör samma sak som jag gjort på rad 5 till 7. Byt ut namnen.

Om du inte vet hur man gör det bör du nog skaffa dig mer grundläggande kunskaper om ASP.

WebbisNetMedlem sedan feb. 20032 027 inlägg
#16

jag kan asp men jag har däremot aldrig byggt en sån här sträng så jag lär mig allt eftersom :-)

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