LorelieMedlem sedan juni 2005264 inlägg 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.
@ndersMedlem sedan juni 200032 969 inlägg 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.
LorelieMedlem sedan juni 2005264 inlägg
@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...
@ndersMedlem sedan juni 200032 969 inlägg 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.
LorelieMedlem sedan juni 2005264 inlägg 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?
@ndersMedlem sedan juni 200032 969 inlägg 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
LorelieMedlem sedan juni 2005264 inlägg 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
@ndersMedlem sedan juni 200032 969 inlägg 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
LorelieMedlem sedan juni 2005264 inlägg ' 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?
@ndersMedlem sedan juni 200032 969 inlägg 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å.
LorelieMedlem sedan juni 2005264 inlägg
<%
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
@ndersMedlem sedan juni 200032 969 inlägg
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
LorelieMedlem sedan juni 2005264 inlägg 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...
@ndersMedlem sedan juni 200032 969 inlägg
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!
LorelieMedlem sedan juni 2005264 inlägg 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
@ndersMedlem sedan juni 200032 969 inlägg 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