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.
Välja omgångar med dropdown
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 →Jag gör det i kväll, sitter på jobbet nu.
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.
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.
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.
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>")
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?
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????
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?
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.
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.
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
Du är välkommen.