Använd IN i din SQL-fråga istället för =.
... WHERE kon IN ('brutta', 'snubbe', 'okänt') ...
Den kommaseparerade listan med vad som ska vara i parentesen efter IN får du skapa i ASP.
15 svar · 813 visningar · startad av Lorelie
Har ett formulär där man i dagsläget får välja ett av tre alternativ med radioknappar, skulle vilja använda kryssrutor istället så att man kan välja ett-tre alternativ (samt att felmeddelande kommer upp om man inte kryssar i något) istället. Hur gör jag det i sql-en?
SQL = _
"select *" &_
" from hast" &_
" where kon = '"& SafeSQL(Request.Form("kon")) &"'"
Så ser koden ut idag
Valen som finns är hingst, sto och valack. Allt står i samma "ruta" i databasen beroende på vad hästen i fråga är.
Använd IN i din SQL-fråga istället för =.
... WHERE kon IN ('brutta', 'snubbe', 'okänt') ...
Den kommaseparerade listan med vad som ska vara i parentesen efter IN får du skapa i ASP.
@nders skrev:
Den kommaseparerade listan med vad som ska vara i parentesen efter IN får du skapa i ASP.
Det får du förklara närmre...
Använd request för att hämta in vilka kryssrutor som är ikryssade. Lägg ihop dessa till en kommaseparerad sträng. Typ:
if request.form("dittfältnamn") <> "" then
sINstring = sINString & ", '" & request.form("dittfältnamn") & "'"
end if
if request.form("dittandrafältnamn") <> "" then
sINstring = sINString & ", '" & request.form("dittandrafältnamn") & "'"
end if
' nu måste du ta bort det inledande kommatecknet, din sträng ska ju inte börja med ett komma.
sINstring = right(sINstring, len(sINstring)-1)
Sedan är det bara att konkatenera in den strängen på rätt ställe i sql-frågan precis som du brukar. Kör inte SafeSQL på den bara.
Förstår inte =/
Ska det se ut såhär?
if request.form("hingst") <> "" then
sINstring = sINString & ", '" & request.form("hingst") & "'"
end if
if request.form("sto") <> "" then
sINstring = sINString & ", '" & request.form("sto") & "'"
end if
if request.form("valack") <> "" then
sINstring = sINString & ", '" & request.form("valack") & "'"
end if
' nu måste du ta bort det inledande kommatecknet, din sträng ska ju inte börja med ett komma.
sINstring = right(sINstring, len(sINstring)-1)
Vad ska jag göra med:
SQL = _
"select *" &_
" from hast" &_
" where kon IN '"& SafeSQL(Request.Form("kon")) &"'"
?
formuläret ser ut såhär
<input type="checkbox" name="hingst">Hingst|
<input type="checkbox" name="sto">Sto|
<input type="checkbox" name="valack">Valack
Men hur vet den att det är i "kon" rutan i databasen den ska titta?
typ:
SQL = _
"select *" &_
" from hast" &_
" where kon IN (" & sINstring & ")"
Ett par länkar i all välmening:
http://www.w3schools.com/asp/default.asp
http://www.w3schools.com/sql/default.asp
mvh
Ledsen, men jag har ingen användning av länkarna den här gången heller... Kass på asp, kass på engelska, kombination av båda funkar inte öht!
"Error Type:
ADODB.Recordset.1 (0x80004005)
SQLState: 37000 Native Error Code: 1064 [MySQL][ODBC 3.51 Driver][mysqld-one.com mysql proxy]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 ') order by namn' at line 1
/avancerad.asp, line 93
"
Sånt felmeddelande får jag i princip vad jag än gör med kodsnuttarna =S
Om du nu får felmeddelande MÅSTE du visa hur koden ser ut. Vi kan inte gissa.
- - -
Jag föreslår att du skaffar ett par böcker i ämnena ASP och SQL (finns garanterat ett par bra även på svenska), för det är inte lätt att hjälpa någon som inte förstår vad man försöker hjälpa till med.
mvh
' nu måste du ta bort det inledande kommatecknet, din sträng ska ju inte börja med ett komma.
sINstring = right(sINstring, len(sINstring)-1)
Vilket kommatecken?
variabeln sINstring inleds ju med ett kommatecken. Det ska det inte göra. Anledningen till att variabeln börjar med kommatecken är att det är enklast att skriva koden så - du kan ju titta på hur variabeln skapas och fylls på.
<%
Function SafeSQL(strText)
SafeSQL = Replace(Replace(strText, "\", "\\"), "'", "''")
End Function
Set MinCon = Server.Createobject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
MinCon.Open "DRIVER={MySQL};SERVER=****************;
SQL = _
"select *" &_
" from hast" &_
" where kon IN (" & sINstring & ")"
if request.form("hingst") <> "" then
sINstring = sINString & ", '" & request.form("hingst") & "'"
end if
if request.form("sto") <> "" then
sINstring = sINString & ", '" & request.form("sto") & "'"
end if
if request.form("valack") <> "" then
sINstring = sINString & ", '" & request.form("valack") & "'"
end if
' nu måste du ta bort det inledande kommatecknet, din sträng ska ju inte börja med ett komma.
sINstring = right(sINstring, len(sINstring)-1)
Så ser det ut nu, " nu måste du ta bort det inledande kommatecknet, din sträng ska ju inte börja med ett komma." Vilket kommatecken?
Har fått lite hjärnsläpp igen... kommer inte ihåg hur man skriver ut sql-satsen :r försökte och fick fram "Invalid procedure call or argument: 'Right'
" rad 40, dvs sista raden i koden ovan
Så ser det ut nu, " nu måste du ta bort det inledande kommatecknet, din sträng ska ju inte börja med ett komma." Vilket kommatecken?
Jag skrev ju precis det?
I övrigt kan du ju inte gärna konkatenera in variabeln i din SQL-fråga innan du har skapat den?
Om du får felmeddelande på right - har du skickat något då i antingen valack, sto eller hingst? Du får sätta en if-sats runt så inte vi försöker ta bort ett inledande kommatecken om variabeln är tom.
if sINstring <> "" then
' nu måste du ta bort det inledande kommatecknet, din sträng ska ju inte börja med ett komma.
sINstring = right(sINstring, len(sINstring)-1)
end if
Finns det inget enklare sätt? Detta är på tok för svårt för mina minimala aspkunskaper...
Ser kommatecknet, men har absolut ingen aning om hur jag får bort det...
Ser kommatecknet, men har absolut ingen aning om hur jag får bort det...
Jag har ju skrivit den koden!!! Det är den kodraden som kommer efter min kodkommentar!
Där ser du... Hur lite jag förstår ;)
Tjura inte ihop nu, men jag fattar verkligen ingenting, ger upp o fortsätter ha den som den är, fungerar ju iallafall. Det blev på tok för komplicerat för mig att göra om
Well, jag har inte riktigt den pedagogiska förmågan att fortsätta jag heller. Jag kan bara, som jag tidigare gjort, verkligen rekommendera dig att läsa på lite om ASP och SQL. Det är oerhört svårt att vara pedagogisk på en nivå som är "för hög". Tjura inte ihop nu. ;)
Vi kan väl hoppas att någon annan tittar in med bättre pedagogik, men jag måste iaf kasta in handduken. Skål! :bire