webForumDet fria alternativet

Välja alternativ med kryssrutor

ASP

47 svar · 1 228 visningar · startad av Lorelie

Medlem sedan juni 2005264 inlägg
Frågan#1

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 = '"& SafeSQL(Request.Form("kon")) &"'"

farg = SafeSQL(Request.Form("farg"))

....

if farg <> "%" then
 SQL = SQL & " and farg like '" & farg & "%'"
end if

Det är kon (=kön) som ska kunna bli valbart (Hingst, Sto, Valack)

Medlem sedan juni 2005264 inlägg
#2

Glömde, http://www.aramennoc.se/avancerad_sok.html, så ser själva forumläret ut idag. Ska såklart byta radioknapparna mot kryssrutor...

Medlem sedan dec. 20025 483 inlägg
#3
if Request.Form("kon") = "" then
 response.write "Du måste välja något..."
else
 kon = ""
 for each k in Request.Form("kon")
  if kon <> "" then kon = kon & ","
  kon = kon & "'" & k & "'"
 next

 SQL = _
 "select *" &_
 " from hast" &_
 " where kon in (" & kon & ")"

 farg = SafeSQL(Request.Form("farg"))

 ....

 if farg <> "%" then
  SQL = SQL & " and farg like '" & farg & "%'"
 end if

 ...
end if
Medlem sedan juni 2005264 inlägg
#4

#3 Känns som jag förstår vad det är du har gjort =D (hade dock inte fått till det själv!).
Blir fel någonstans, men jag vet inte var, för felmeddelandet som kommer upp blir http error 507 o jag har fått hjärnsläpp om vart man ändrar det.. =S


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 & "'" & 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
Medlem sedan dec. 19996 721 inlägg
#5

Får du inget bättre felmeddelande?

OBS! Glöm inte SafeSQL här:

kon = kon & "'" & SafeSQL(k) & "'"

Medlem sedan juni 2005264 inlägg
#6

HTTP Error 507
507 Unexpected

The Web server encountered an unexpected error while communicating with the ASP service.

Please contact the server's administrator if this problem persists.

Står det. Har fått annat meddelande förut, där det specifikt stått vad som är fel =S
Det blir likadant när jag ändrar något på en sida som fungerar sen tidigare (alltså gör medvetet fel för att se vad det blir för felmeddelande)

Medlem sedan dec. 200012 464 inlägg
#7

Flyttas till ASP

Medlem sedan juni 20019 519 inlägg
#8

Hur ser resten av koden ut?

kon kan väl vara tomt med?

Skriv ut din SQL fråga

För jag gissar att om det är tomt så kommer väl IN () bli fel i SQL frågan

Medlem sedan juni 2005264 inlägg
#9

Hade inte tänkt att kunna ha kon tomt, men iof, man skulle ju både kunna lämna tomt och kryssa i alla...

Här kommer hela koden


SQL = _
"select *" &_
" from hast" &_
" where kon = '"& SafeSQL(Request.Form("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
%>

Formuläret hittas här: https://www.aramennoc.se/avancerad_sok.html

Medlem sedan dec. 20025 483 inlägg
#10

I koden i inlägg #4 ser jag inte det avslutande "end if". Med andra ord skall din kod se ut så här:

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
Medlem sedan juni 2005264 inlägg
#11

Blir samma felmeddelande =/

(googlat lite på det, och ingen verkar ha något vettigt svar på varför det blir det meddelandet o inte det vanliga...)

Formuläret samt felmeddelandet finns på https://www.aramennoc.se I den övre vänstra rutan med rullgardinen finns om man drar ner sidan en länk som heter Under konstruktion, där går man in

Medlem sedan juni 20019 519 inlägg
#12

ge hela koden du använder dig av, felmeddelandet är ju inte direkt ett typiskt ASP fel.

Medlem sedan juni 2005264 inlägg
#13

Hela avancerad.asp:

<HTML>

<HEAD>
<META NAME="robots" CONTENT="noindex">
<META NAME="Author" CONTENT="© Lina Åkerberg &amp; 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=***********;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>

Hela avancerad_sok.html:


<HTML>

<head>
<title>Aramennoc.se - Med connemaran i focus</title>
<BASE TARGET="inget">

<link href="undersidor.css" rel="stylesheet" type="text/css">

</head>

<CENTER>
<FORM ACTION = "avancerad.asp" METHOD = "POST" target="inget">
<DIV ALIGN="LEFT">
<P>
<b>Avancerad Sökning</B> <BR>
 <BR>

<B>Kön:</B><BR>

<input type="checkbox" name="kon" id="hingst" value="hingst"/> Hingst |

<input type="checkbox" name="kon" id="sto" value="Sto"/> Sto |

<input type="checkbox" name="kon" id="valack" value="valack"/>Valack

<BR><BR>

Del av eller helt namn:<BR>
<INPUT TYPE = "TEXT" NAME = "hast" SIZE="17">&nbsp; 
</select>

<BR><BR>

<select name="ras">
<option selected value="%">Alla Länder/Stamböcker</option>
<option value="Connemara">Sverige</option>
<option value="IRE">Irland</option>
<option value="GBR">England (GBR)</option>
<option value="NPS">England (NPS)</option>
<option value="DK">Danmark</option>
<option value="DE">Tyskland</option>
<option value="FIN">Finland</option>
<option value="NOR">Norge</option>
<option value="FRA">Frankrike</option>
<option value="AUS">Australien</option>
<option value="USA">USA</option>
<option value="CAN">Kanada</option>
<option value="NDL">Nederländerna</option>
<option value="NZ">Nya Zeeland</option>
</select>

<BR><BR>

<select name="stambok">
<option selected value="Alla">Alla hästar</option>
<option value="not null">Endast stambokförda</option>

</select>

<BR><bR>

<select name="farg">
<option selected value="%">Alla färger</option>
<option value="Skimmel">Skimmel</option>
<option value="Gulbrun">Gulbrun</option>
<option value="Ljus Gulbrun">Ljus Gulbrun</option>
<option value="Mörk Gulbrun">Mörk Gulbrun</option>
<option value="Gulbrunsvart">Gulbrunsvart</option>
<option value="Brun">Brun</option>
<option value="Mörkbrun">Mörkbrun</option>
<option value="Ljusbrun">Ljusbrun</option>
<option value="Brunsvart">Brunsvart</option>
<option value="Svart">Svart</option>
<option value="Svartbrun">Svartbrun</option>
<option value="Fux">Fux</option>
<option value="BEC">BEC</option>
<option value="Isabell">Isabell</option>
<option value="Svartskimmel">Svartskimmel</option>
<option value="Brunskimmel">Brunskimmel</option>
<option value="Rödskimmel">Rödskimmel</option>
<option value="Gulbrunskimmel">Gulbrunskimmel</option>
<option value="Konstantskimmel">Konstantskimmel</option>

</select>

<BR><BR>

Uppfödare (namn eller land):<BR>
<INPUT TYPE = "TEXT" NAME = "uppf" SIZE="17">&nbsp; 
</select>

<BR><BR>

<input type="radio" name="ordning" checked value="namn">Bokstavsordning
<BR>
<input type="radio" name="ordning" value="stamboks_nr">Nummerordning

<BR><bR>

Endast hästar med bild <input type="checkbox" name="bild"><BR>

Fotograf:<BR>
<INPUT TYPE = "TEXT" NAME = "inskickad_av" SIZE="17">&nbsp; 
</select>

<BR><BR>

Diplom (sto) <input type="checkbox" name="diplom"> | Elit <input type="checkbox" name="elit">

<BR><BR>
<INPUT TYPE = "SUBMIT" NAME = "knapp" VALUE = "Leta">

</form>
</p>
</DIV>

</BODY>
</HTML>

För att se formuläret och svarssidan på hemsidan http://www.aramennoc.se, titta under (Rutan uppe till vänster, dra ner sidan lite, länken ligger under kanten..) Under konstruktion

Det är allt jag har som har med detta att göra.

Medlem sedan juni 20019 519 inlägg
#14

1. du saknar %> för att stänga asp koden
2. Du anropar ett objekt som inte har skapats/kan har skapats efter din IF fråga (Ditt Recordset loopas ut).

Rensat lite i koden och "bör" fungera:

<HTML>

<HEAD>
<META NAME="robots" CONTENT="noindex">
<META NAME="Author" CONTENT="© Lina Åkerberg &amp; Karin Halvarsson 2005">
<BASE TARGET="main">
<LINK HREF="sokmeny.css" REL="stylesheet" TYPE="text/css">
<TITLE>Aramennoc.se - Med connemaran i focus</TITLE>
</HEAD>

<BODY>
<SPAN CLASS="normal">

<a href="avancerad_sok.html" target="main">Tillbaka till avancerat sökformulär</A><BR><BR>
<%

Function SafeSQL(strText)
	SafeSQL = Replace(Replace(strText, "\", "\\"), "'", "''")
End Function

if Request.Form("kon") = "" then
	response.write "Du måste välja kön (ett, två eller tre)"
else
	Dim kon
	kon = ""
	for each k in Request.Form("kon")
		if kon <> "" then kon = kon & ","
		kon = kon & "'" & safesql(k) & "'"
	next

	Dim SQL
	SQL = "select * from hast where kon in (" & kon & ")"

	Dim farg
	farg = SafeSQL(Request.Form("farg"))
	if farg <> "%" then SQL = SQL & " and farg like '" & farg & "%'"

	Dim ras
	ras = SafeSQL(Request.Form("ras"))
	if ras <> "%" then SQL = SQL & " and ras like '" & ras & "%'"

	Dim namn
	namn = SafeSQL(Request.Form("hast"))
	if namn <> "" then SQL = SQL & " and namn like '%" & namn & "%'"

	Dim stambok
	stambok = lcase(SafeSQL(Request.Form("stambok")))
	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

	Dim uppf
	uppf = SafeSQL(Request.Form("uppf"))
	if uppf <> "" then SQL = SQL & " and uppf like '%" & uppf & "%'"

	Dim inskickad_av
	inskickad_av = SafeSQL(Request.Form("inskickad_av"))
	if inskickad_av <> "" then SQL = SQL & " and inskickad_av like '%" & inskickad_av & "%'"

	Dim bild
	bild = SafeSQL(Request.Form("bild"))
	if bild <> "" then SQL = SQL & " and bild_url is not null"

	Dim diplom
	diplom = SafeSQL(Request.Form("diplom"))
	if diplom <> "" then SQL = SQL & " and diplom_ar is not null"

	Dim elit
	elit = SafeSQL(Request.Form("elit"))
	if elit <> "" then SQL = SQL & " and elit_ar is not null"

	SQL = SQL & " order by " & SafeSQL(Request.Form("ordning"))
	
	Dim MinCon, rs
	Set MinCon = Server.Createobject("ADODB.Connection")
	Set rs = Server.CreateObject("ADODB.Recordset")
	MinCon.Open "DRIVER={MySQL};SERVER=localhost;DATABASE=***********;UID=***  ********;PWD=*************;"

	rs.Open SQL, MinCon
	
	'Skriv ut alla träffar
	Response.Write("<STRONG>Hittade hästar:</STRONG>")
	If Not RS.EOF Then
		Do While Not RS.EOF
			Response.Write("<a href=""hast.asp?hastId=" & rs("hast_id") & """>" & rs("namn") & "</a>")
			'Look if picture exists:
			If Len(rs("bild_url")) Then
				Response.Write("<img src=""arrow.gif"" alt=""Bild finns"" border=""0"">")
			End If
			Response.Write("<BR>")
			RS.MoveNext()
		Loop
	Else
		Response.Write("Ingen träff")
	End If

	set RS = Nothing
	MinCon.Close
	Set MinCon = Nothing
end if
%>
<hr>

</BODY>
</HTML>
Medlem sedan juni 2005264 inlägg
#15

voigtann1 skrev:

1. du saknar %> för att stänga asp koden
2. Du anropar ett objekt som inte har skapats/kan har skapats efter din IF fråga (Ditt Recordset loopas ut).

Rensat lite i koden och "bör" fungera:

´

Fungerar tyvärr inte, samma felmeddelande som innan (och ja, jag kom ihåg att fylla i lösen osv :))

En fråga, där kon bestäms står inget end if, är det den end if som står längst ner som hör dit?

Medlem sedan juni 20019 519 inlägg
#16

If frågan eftersom du inte har en större if fråga med flera rader kod så kan man göra det på en rad.

Jag ser inte vad felet kan vara i så fall, jag har provat att köra koden lokalt utan ett recordset så det ända jag kan tänka mig felet kan vara är att du har fel i din SQL fråga... du saknar tabell eller fält i tabellen som du försöker anropar.

Medlem sedan juni 2005264 inlägg
#17

https://www.aramennoc.se/falt.jpg Här är alla fält i tabellen hast
Jag ser inget fel, men titta gärna för flera par ögon er ju mer än mina =)

Attans vad svårt det är när man inte får något vettigt felmeddelande =S Tycker det är nog så knepigt när felmeddelandet talar om var man ska titta och vad ska titta efter...

Medlem sedan juni 20019 519 inlägg
#18

Du kan ju göra det enkelt för dig: Skriv ut SQL frågan, skapar en tom sida => Använd SQL frågan i den och se om den generera något fel.

Medlem sedan juni 2005264 inlägg
#19

Funderade på det, men hur gör man? (lyckas glömma varje gång.. *pinsamt* )
är det response.write SQL? o var lägger man det? ska man inte sätta ' någonstans också?

Medlem sedan juni 20019 519 inlägg
#20

Sätt Response.Write SQL eller vad din sträng variabel heter för SQL frågan efter den tar du response.End

282 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
146 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)