webForumDet fria alternativet

Välja omgångar med dropdown

ASP

34 svar · 583 visningar · startad av Ralle · sida 2 av 2

Frågan, av Ralle

SELECT DISTINCT Omgang AS Omg FROM Elitserien20022003 Den använder jag för att ta ut omgångarna. Jag har lagt upp en dropdown på samma sida. Hur gör jag för att få in värdena i dropdown-listan? För att välja sen kan man väl använda IF-satser?

Läs frågan i sin helhet →
Medlem sedan mars 20015 287 inlägg
#21

Kanske är läge att visa hela koden, det blir lättare att se sammanhanget då.
Du måste lägga till formulärskod runt dropdownen och posta sidan för att komma åt det nya värdet i valdomgang.

Medlem sedan feb. 2003210 inlägg
#22

Jag gör det i kväll, sitter på jobbet nu.

Medlem sedan feb. 2003210 inlägg
#23

Okey, här kommer koden:

Set objConnect = Server.CreateObject("ADODB.Connection")
objConnect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "& Server.MapPath("../databas/Ishockey.mdb")
strSQL1="SELECT DISTINCT Omgang AS Omg FROM Elitserien_2002_2003"
Set rstOmg = Server.Createobject("adodb.RecordSet")
rstOmg.Open strSQL1, objConnect, 1, 2
valdomgang=0
If rstOmg.EOF Then
     Response.Write("Ingen omgång funnen")
Else
     Response.Write("<SELECT name=""valdomgang"">")
     Do until rstOmg.EOF
          Response.Write("<OPTION value=""" & rstOmg("Omg") & """>" &"Omgång " & rstOmg("Omg") & "</OPTION>")
          rstOmg.MoveNext
     Loop
     Response.Write("</SELECT>")
End If
%><BR><BR><%
If valdomgang=0 Then
strSQL="SELECT Datum, Omgang, L1.Lag AS hemma, L2.Lag AS borta, HemmaPeriod1Mal, BortaPeriod1Mal, HemmaPeriod2Mal, BortaPeriod2Mal, HemmaPeriod3Mal, BortaPeriod3Mal, HemmaPeriod4Mal, BortaPeriod4Mal, HemmaPeriod5Mal, BortaPeriod5Mal FROM (Elitserien_2002_2003 AS elit INNER JOIN Lag_i_Elitserien_2002_2003 AS L1 ON L1.ID=elit.HemmaLag) INNER JOIN Lag_i_Elitserien_2002_2003 AS L2 ON L2.ID=elit.BortaLag ORDER BY Datum"
Set rstResultat=objConnect.Execute(strSQL)
Else
strSQL="SELECT Datum, Omgang, L1.Lag AS hemma, L2.Lag AS borta, HemmaPeriod1Mal, BortaPeriod1Mal, HemmaPeriod2Mal, BortaPeriod2Mal, HemmaPeriod3Mal, BortaPeriod3Mal, HemmaPeriod4Mal, BortaPeriod4Mal, HemmaPeriod5Mal, BortaPeriod5Mal FROM (Elitserien_2002_2003 AS elit INNER JOIN Lag_i_Elitserien_2002_2003 AS L1 ON L1.ID=elit.HemmaLag) INNER JOIN Lag_i_Elitserien_2002_2003 AS L2 ON L2.ID=elit.BortaLag WHERE omgang='" & request.form("valdomgang") & "' ORDER BY Datum"
Set rstResultat=objConnect.Execute(strSQL)
End If

Efter det här kommer kod för det som kommer ut på skärmen, så det tar jag inte med.

Medlem sedan mars 20015 287 inlägg
#24

Detta tycker jag har vissa möjligheter att fungera:

Set objConnect = Server.CreateObject("ADODB.Connection")
objConnect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "& Server.MapPath("../databas/Ishockey.mdb")
strSQL1="SELECT DISTINCT Omgang AS Omg FROM Elitserien_2002_2003"
Set rstOmg = Server.Createobject("adodb.RecordSet")
rstOmg.Open strSQL1, objConnect, 1, 2
valdomgang=0
If rstOmg.EOF Then
     Response.Write("Ingen omgång funnen")
Else
     Response.Write("<Form name=""omgang"" action="""& Request.ServerVariables("SCRIPT_NAME") & """>")
     Response.Write("<SELECT name=""valdomgang"">")
     Do until rstOmg.EOF
          Response.Write("<OPTION value=""" & rstOmg("Omg") & """>" &"Omgång " & rstOmg("Omg") & "</OPTION>")
          rstOmg.MoveNext
     Loop
     Response.Write("</SELECT>")
     Response.Write("<INPUT name=Submit type=submit value=""  Välj ""></form>")
End If

Response.Write "<BR><BR>"

If request.form("valdomgang") <> "" then
	valdomgang = request.form("valdomgang")
End If

If valdomgang=0 Then
	strSQL="SELECT Datum, Omgang, L1.Lag AS hemma, L2.Lag AS borta, HemmaPeriod1Mal, BortaPeriod1Mal, HemmaPeriod2Mal, BortaPeriod2Mal, HemmaPeriod3Mal, BortaPeriod3Mal, HemmaPeriod4Mal, BortaPeriod4Mal, HemmaPeriod5Mal, BortaPeriod5Mal FROM (Elitserien_2002_2003 AS elit INNER JOIN Lag_i_Elitserien_2002_2003 AS L1 ON L1.ID=elit.HemmaLag) INNER JOIN Lag_i_Elitserien_2002_2003 AS L2 ON L2.ID=elit.BortaLag ORDER BY Datum"
	Set rstResultat=objConnect.Execute(strSQL)
Else
	strSQL="SELECT Datum, Omgang, L1.Lag AS hemma, L2.Lag AS borta, HemmaPeriod1Mal, BortaPeriod1Mal, HemmaPeriod2Mal, BortaPeriod2Mal, HemmaPeriod3Mal, BortaPeriod3Mal, HemmaPeriod4Mal, BortaPeriod4Mal, HemmaPeriod5Mal, BortaPeriod5Mal FROM (Elitserien_2002_2003 AS elit INNER JOIN Lag_i_Elitserien_2002_2003 AS L1 ON L1.ID=elit.HemmaLag) INNER JOIN Lag_i_Elitserien_2002_2003 AS L2 ON L2.ID=elit.BortaLag WHERE omgang='" & valdomgang & "' ORDER BY Datum"
	Set rstResultat=objConnect.Execute(strSQL)
End If

Som det är skrivet nu är omgang av typen text i din db, om det är tal (som det verkar som iofs) får du ta bort apostroferna runt omgang i strSQL.

Medlem sedan feb. 2003210 inlägg
#25

Ja, "omgang" är tal.

Men tyvärr fungerar inte ditt förslag, det händer ingenting.

Så här ser url'en ut:http://localhost/Elitseriematcher_2002-2003.asp?valdomgang=1&Submit=++V�lj+

Hoppas det kan ge något.

Sen undrar jag två saker. Jag skulle vilja slippa "välj"-knappen. När man väljer i dropdown så tar den fram det jag valt utan att behöva trycka på knappen.

Sen skulle jag vilja ha en nolla före ettan i listan, som man väljer när man vill visa alla matcher.

Medlem sedan mars 20015 287 inlägg
#26

Hupp!
Ändra till detta:

	Response.Write("<Form name=""omgang"" action="""& Request.ServerVariables("SCRIPT_NAME") & """ method=""post"">")
	Response.Write("<SELECT name=""valdomgang"" OnChange=""this.form.submit();"">")
	Do until rstOmg.EOF
          Response.Write("<OPTION value=""" & rstOmg("Omg") & """>" &"Omgång " & rstOmg("Omg") & "</OPTION>")
          rstOmg.MoveNext
     Loop
     Response.Write("</SELECT></form>")
Medlem sedan mars 20015 287 inlägg
#27

Sen skulle jag vilja ha en nolla före ettan i listan, som man väljer när man vill visa alla matcher.

Så att det blir:

01
02
03
04
osv?

Medlem sedan feb. 2003210 inlägg
#28

Nej.

Så här:
0
1
2
3
osv.

Som det är nu hämtas 1 t.o.m. 3 från tabellen, men eftersom 0 inte finns i tabellen, tänkte jag om man kunde få in värdet på något annat sätt i dropdown'en.

Tilldelning eller????

Medlem sedan mars 20015 287 inlägg
#29

Ah! Ok, inga problem.

Lägg in:

      Response.Write("\<OPTION value=0\>Omgång 0\</OPTION\>")

Precis över:

Do until rstOmg.EOF

Så ska det nog bli bra.
Hur fungerade den andra koden jag postade?

Medlem sedan feb. 2003210 inlägg
#30

Jag fick det här felet:
* Feltyp:
Microsoft JET Database Engine (0x80040E07)
Typblandningsfel i villkorsuttryck.
/Elitseriematcher_2002-2003.asp, line 29

Jag visar rad 28 o 29 härunder:

strSQL="SELECT Datum, Omgang, L1.Lag AS hemma, L2.Lag AS borta, HemmaPeriod1Mal, BortaPeriod1Mal, HemmaPeriod2Mal, BortaPeriod2Mal, HemmaPeriod3Mal, BortaPeriod3Mal, HemmaPeriod4Mal, BortaPeriod4Mal, HemmaPeriod5Mal, BortaPeriod5Mal FROM (Elitserien_2002_2003 AS elit INNER JOIN Lag_i_Elitserien_2002_2003 AS L1 ON L1.ID=elit.HemmaLag) INNER JOIN Lag_i_Elitserien_2002_2003 AS L2 ON L2.ID=elit.BortaLag WHERE omgang=' & valdomgang & ' ORDER BY Datum"
Set rstResultat=objConnect.Execute(strSQL)

Du kan bortse från det här frågan, jag hade ju glömt bort apostroferna.

Men angående det här med omgång 0 först så blir det lite galet.

Jag får så här i listan:
0
1
0
2
0
3
osv.

Medlem sedan mars 20015 287 inlägg
#31

Skrev jag inte:

solbulle skrev:

Precis över:
Do until rstOmg.EOF

;)

Medlem sedan feb. 2003210 inlägg
#32

Okey, jag läste alldeles galet.

Jag provade att göra så, men när jag väljer "omgång 0" så händer ingenting.

Medlem sedan mars 20015 287 inlägg
#33

Du läst einte galet, jag skrev fel först, ändrat nu. :)

Anledningen till att det inte blir något vid "omgång 0" är att du aldrig ändrar värdet.

Tror du får lägga till ännu en rad i din seleclista, typ:

Set objConnect = Server.CreateObject("ADODB.Connection")
objConnect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "& Server.MapPath("../databas/Ishockey.mdb")
strSQL1="SELECT DISTINCT Omgang AS Omg FROM Elitserien_2002_2003"
Set rstOmg = Server.Createobject("adodb.RecordSet")
rstOmg.Open strSQL1, objConnect, 1, 2
valdomgang=0
If rstOmg.EOF Then
     Response.Write("Ingen omgång funnen")
Else
	Response.Write("<Form name=""omgang"" action="""& Request.ServerVariables("SCRIPT_NAME") & """ method=""post"">")
	Response.Write("<SELECT name=""valdomgang"" OnChange=""this.form.submit();"">")
	Response.Write("<OPTION value=""x"">-- VÄLJ --</OPTION>") 
	Response.Write("<OPTION value=0>Omgång 0</OPTION>")
	Do until rstOmg.EOF
          Response.Write("<OPTION value=""" & rstOmg("Omg") & """>" &"Omgång " & rstOmg("Omg") & "</OPTION>")
          rstOmg.MoveNext
     Loop
     Response.Write("</SELECT></form>")

Response.Write "<BR><BR>"

If request.form("valdomgang") <> "" then
	valdomgang = request.form("valdomgang")
End If

If Isnumeric(valdomgang) then 
	If valdomgang=0 Then
		strSQL="SELECT Datum, Omgang, L1.Lag AS hemma, L2.Lag AS borta, HemmaPeriod1Mal, BortaPeriod1Mal, HemmaPeriod2Mal, BortaPeriod2Mal, HemmaPeriod3Mal, BortaPeriod3Mal, HemmaPeriod4Mal, BortaPeriod4Mal, HemmaPeriod5Mal, BortaPeriod5Mal FROM (Elitserien_2002_2003 AS elit INNER JOIN Lag_i_Elitserien_2002_2003 AS L1 ON L1.ID=elit.HemmaLag) INNER JOIN Lag_i_Elitserien_2002_2003 AS L2 ON L2.ID=elit.BortaLag ORDER BY Datum"
		Set rstResultat=objConnect.Execute(strSQL)
	Else
		strSQL="SELECT Datum, Omgang, L1.Lag AS hemma, L2.Lag AS borta, HemmaPeriod1Mal, BortaPeriod1Mal, HemmaPeriod2Mal, BortaPeriod2Mal, HemmaPeriod3Mal, BortaPeriod3Mal, HemmaPeriod4Mal, BortaPeriod4Mal, HemmaPeriod5Mal, BortaPeriod5Mal FROM (Elitserien_2002_2003 AS elit INNER JOIN Lag_i_Elitserien_2002_2003 AS L1 ON L1.ID=elit.HemmaLag) INNER JOIN Lag_i_Elitserien_2002_2003 AS L2 ON L2.ID=elit.BortaLag WHERE omgang=" & valdomgang & " ORDER BY Datum"
		Set rstResultat=objConnect.Execute(strSQL)
	End If
End If
Medlem sedan feb. 2003210 inlägg
#34

TACK så hemskt mycket.

Nu fungerar det perfekt.

Medlem sedan mars 20015 287 inlägg
#35

Du är välkommen.

270 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
134 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)