Det blir samma felmeddelande vad jag än gör! *frustrerad*
Välja alternativ med kryssrutor
47 svar · 1 228 visningar · startad av Lorelie · sida 2 av 3
Frågan, av Lorelie
Har ett forumlär där man väljer tre olika alternativ med radioknappar, dvs man kan bara få ett av alternativen. Skulle vilja ha kryssrutor istället så man kan välja på ett, två eller tre alternativ (o kryssar man inte i något ska det helst komma upp en text om att man måste välja något..) Hur gör man detta? Dagens kod ser ut såhär: SQL = "select " & " from hast" & " where kon = '"& Sa
Läs frågan i sin helhet →ta bort all asp och bara kör en response.write("test") för att ens kolla att servern inte har några problem med ASPn.
Det funkade!, blev inga fel
Då är det ju bara att börja felsöka, kommentera ut Recordset koden, kolla att ditt Connection objekt kan skapas utan några problem osv.
Men sånt kan inte jag =S
Om det är "min" kod du kör: Kommentera ut från rs.Open SQL, MinCon till set RS = Nothing
Så kan du ju se att du kan ansluta dig till din databas korrekt, om det fungera, ta bort kommentaren för rs.Open, om det fungera gå vidare...
Provade nu (inte haft tid på jättelänge!) men det blir samma felmeddelande vad jag än gör!
Visa hela avancerad.asp så som den ser ut nu :)
Denna ligger ute på hemsidan nu.
<HTML>
<HEAD>
<META NAME="robots" CONTENT="noindex">
<META NAME="Author" CONTENT="© Lina Åkerberg & Karin Halvarsson 2005">
<BASE TARGET="main">
<LINK HREF="sokmeny.css" REL="stylesheet" TYPE="text/css">
<TITLE>Aramennoc.se - Med connemaran i focus</TITLE>
</HEAD>
<%
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=localhost;DATABASE=aramennoc_se;UID=***********;PWD=***********;"
if Request.Form("kon") = "" then
response.write "Du måste välja kön (ett, två eller tre)"
else
kon = ""
for each k in Request.Form("kon")
if kon <> "" then kon = kon & ","
kon = kon & "'" & safesql(k) & "'"
next
SQL = _
"select *" &_
" from hast" &_
" where kon in (" & kon & ")"
farg = SafeSQL(Request.Form("farg"))
ras = SafeSQL(Request.Form("ras"))
namn = SafeSQL(Request.Form("hast"))
stambok = lcase(SafeSQL(Request.Form("stambok")))
uppf = SafeSQL(Request.Form("uppf"))
inskickad_av = SafeSQL(Request.Form("inskickad_av"))
if farg <> "%" then
SQL = SQL & " and farg like '" & farg & "%'"
end if
if ras <> "%" then
SQL = SQL & " and ras like '" & ras & "%'"
end if
if namn <> "" then
SQL = SQL & " and namn like '%" & namn & "%'"
end if
if stambok = "not null" then
SQL = SQL & " and stamboks_nr is not null"
elseif stambok = "null" then
SQL = SQL & " and stamboks_nr is null"
end if
if uppf <> "" then
SQL = SQL & " and uppf like '%" & uppf & "%'"
end if
if inskickad_av <> "" then
SQL = SQL & " and inskickad_av like '%" & inskickad_av & "%'"
end if
bild = SafeSQL(Request.Form("bild"))
if bild <> "" then
SQL = SQL & " and bild_url is not null"
end if
diplom = SafeSQL(Request.Form("diplom"))
if diplom <> "" then
SQL = SQL & " and diplom_ar is not null"
end if
elit = SafeSQL(Request.Form("elit"))
if elit <> "" then
SQL = SQL & " and elit_ar is not null"
end if
SQL = SQL & " order by " & SafeSQL(Request.Form("ordning"))
rs.Open SQL, MinCon
end if
<SPAN CLASS="normal">
<a href="avancerad_sok.html" target="main">Tillbaka till avancerat sökformulär</A><BR><BR>
<STRONG>
Hittade hästar:
</STRONG>
<BR>
<BR>
<%
Do While Not rs.EOF
%>
<A HREF = hast.asp?hast_id=<%=rs("hast_id")%>><%=rs("namn")%></A>
<%
IF (rs("bild_url"))<>"" THEN %><img src="arrow.gif" alt="Bild finns" border=0>
<%
END IF %>
<BR>
<%
rs.MoveNext
Loop
%>
</SPAN>
<hr>
</BODY>
</HTML>
Som voigtann1 påpekade tidigare saknas %> efter "end if" i:
rs.Open SQL, MinCon
end if
<SPAN CLASS="normal">
Klantigt av mig! Nu är det fixat iaf, ingen skillnad =(
Om det är http://www.aramennoc.se/avancerad_sok.html så verkar fungera det för mig.
Ändrar mig!!
Kryssade i valack och tryckte på sök, en lista dök upp!! Funkar även med sto o hingst, samt alla eller två, men inte om man inte kryssar i något!
Om det är meningen att man måste välja kön kan du göra så här:
<HTML>
<HEAD>
<META NAME="robots" CONTENT="noindex">
<META NAME="Author" CONTENT="© Lina Åkerberg & Karin Halvarsson 2005">
<BASE TARGET="main">
<LINK HREF="sokmeny.css" REL="stylesheet" TYPE="text/css">
<TITLE>Aramennoc.se - Med connemaran i focus</TITLE>
</HEAD>
<%
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=localhost;DATABASE=aramennoc_se;UID=***********;PWD=***********;"
if Request.Form("kon") = "" then
response.write "Du måste välja kön (ett, två eller tre)"
else
kon = ""
for each k in Request.Form("kon")
if kon <> "" then kon = kon & ","
kon = kon & "'" & safesql(k) & "'"
next
SQL = _
"select *" &_
" from hast" &_
" where kon in (" & kon & ")"
farg = SafeSQL(Request.Form("farg"))
ras = SafeSQL(Request.Form("ras"))
namn = SafeSQL(Request.Form("hast"))
stambok = lcase(SafeSQL(Request.Form("stambok")))
uppf = SafeSQL(Request.Form("uppf"))
inskickad_av = SafeSQL(Request.Form("inskickad_av"))
if farg <> "%" then
SQL = SQL & " and farg like '" & farg & "%'"
end if
if ras <> "%" then
SQL = SQL & " and ras like '" & ras & "%'"
end if
if namn <> "" then
SQL = SQL & " and namn like '%" & namn & "%'"
end if
if stambok = "not null" then
SQL = SQL & " and stamboks_nr is not null"
elseif stambok = "null" then
SQL = SQL & " and stamboks_nr is null"
end if
if uppf <> "" then
SQL = SQL & " and uppf like '%" & uppf & "%'"
end if
if inskickad_av <> "" then
SQL = SQL & " and inskickad_av like '%" & inskickad_av & "%'"
end if
bild = SafeSQL(Request.Form("bild"))
if bild <> "" then
SQL = SQL & " and bild_url is not null"
end if
diplom = SafeSQL(Request.Form("diplom"))
if diplom <> "" then
SQL = SQL & " and diplom_ar is not null"
end if
elit = SafeSQL(Request.Form("elit"))
if elit <> "" then
SQL = SQL & " and elit_ar is not null"
end if
SQL = SQL & " order by " & SafeSQL(Request.Form("ordning"))
rs.Open SQL, MinCon
%>
<SPAN CLASS="normal">
<a href="avancerad_sok.html" target="main">Tillbaka till avancerat sökformulär</A><BR><BR>
<STRONG>
Hittade hästar:
</STRONG>
<BR>
<BR>
<%
Do While Not rs.EOF
%>
<A HREF = hast.asp?hast_id=<%=rs("hast_id")%>><%=rs("namn")%></A>
<%
IF (rs("bild_url"))<>"" THEN %><img src="arrow.gif" alt="Bild finns" border=0>
<%
END IF %>
<BR>
<%
rs.MoveNext
Loop
%>
</SPAN>
<hr>
<%
end if
%>
</BODY>
</HTML>
Funkade kanon =D
Tack så supermycket för hjälpen alla inblandade =D
En annan grej jag märkte nu, när man kryssar i att man vill ha dem i nummerordning kommer ALLA upp, verkar som att de är sorterade efter hast_id, hur gör man för att bara få upp dem som har ett stamboknummer? alltså sorteras efter stambok_nr och de som inte ha något sådant ska inte vara med
Om man väljer att sortera efter stamboks_nr så skall bara de som har ett sådant nummer visas i resultatet? Om det är NULL som sparas i det databasfältet kan det se ut så här (se till att jag stavat fältnamnet rätt nedan):
<HTML>
<HEAD>
<META NAME="robots" CONTENT="noindex">
<META NAME="Author" CONTENT="© Lina Åkerberg & Karin Halvarsson 2005">
<BASE TARGET="main">
<LINK HREF="sokmeny.css" REL="stylesheet" TYPE="text/css">
<TITLE>Aramennoc.se - Med connemaran i focus</TITLE>
</HEAD>
<%
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=localhost;DATABASE=aramennoc_se;UID=***********;PWD=***********;"
if Request.Form("kon") = "" then
response.write "Du måste välja kön (ett, två eller tre)"
else
kon = ""
for each k in Request.Form("kon")
if kon <> "" then kon = kon & ","
kon = kon & "'" & safesql(k) & "'"
next
SQL = _
"select *" &_
" from hast" &_
" where kon in (" & kon & ")"
farg = SafeSQL(Request.Form("farg"))
ras = SafeSQL(Request.Form("ras"))
namn = SafeSQL(Request.Form("hast"))
stambok = lcase(SafeSQL(Request.Form("stambok")))
uppf = SafeSQL(Request.Form("uppf"))
inskickad_av = SafeSQL(Request.Form("inskickad_av"))
ordning = SafeSQL(Request.Form("ordning"))
if farg <> "%" then
SQL = SQL & " and farg like '" & farg & "%'"
end if
if ras <> "%" then
SQL = SQL & " and ras like '" & ras & "%'"
end if
if namn <> "" then
SQL = SQL & " and namn like '%" & namn & "%'"
end if
if stambok = "not null" then
SQL = SQL & " and stamboks_nr is not null"
elseif stambok = "null" then
SQL = SQL & " and stamboks_nr is null"
end if
if uppf <> "" then
SQL = SQL & " and uppf like '%" & uppf & "%'"
end if
if inskickad_av <> "" then
SQL = SQL & " and inskickad_av like '%" & inskickad_av & "%'"
end if
bild = SafeSQL(Request.Form("bild"))
if bild <> "" then
SQL = SQL & " and bild_url is not null"
end if
diplom = SafeSQL(Request.Form("diplom"))
if diplom <> "" then
SQL = SQL & " and diplom_ar is not null"
end if
elit = SafeSQL(Request.Form("elit"))
if elit <> "" then
SQL = SQL & " and elit_ar is not null"
end if
if ordning = "stamboks_nr" then
SQL = SQL & " and stambok_nr is not null"
end if
SQL = SQL & " order by " & ordning
rs.Open SQL, MinCon
%>
<SPAN CLASS="normal">
<a href="avancerad_sok.html" target="main">Tillbaka till avancerat sökformulär</A><BR><BR>
<STRONG>
Hittade hästar:
</STRONG>
<BR>
<BR>
<%
Do While Not rs.EOF
%>
<A HREF = hast.asp?hast_id=<%=rs("hast_id")%>><%=rs("namn")%></A>
<%
IF (rs("bild_url"))<>"" THEN %><img src="arrow.gif" alt="Bild finns" border=0>
<%
END IF %>
<BR>
<%
rs.MoveNext
Loop
%>
</SPAN>
<hr>
<%
end if
%>
</BODY>
</HTML>
Fungerade inte, alla kommer upp ändå. Om man inte kryssar i att man bara vill ha stambokförda hästar, för då kommer bara de upp, men jag vill att det ska ske automagiskt sas
Nu drog jag förhastade slutsatser igen :$ Gick mycket bättre när jag skrev rätt... det fungerade visst (missade ett s bara...)
Ännu en fråga... :$
Saknar en sökfunktion för född, kopierade namn rakt av, för det ska fungera likadant är det tänkt, men det fungerar inte? Blir inget fel eller så, men alla hästar kommer upp även om man fyller i årtal (många har helt födelsedatum, typ 2009-02-10 eller 2009 (Februari) om det spelar någon roll) I databasen är det "Varchar", precis som alla andra rutor.
Då måste vi se koden igen :)

