21. maj 2004 - 10:20Der er
27 kommentarer og 1 løsning
Dropdown i ASP
Hej Jeg har fundet et script som Eagleeye har lavet, som sædvanligt smart, men jeg er knap så smart åbenbart, fordi jeg kan kun få scriptet til at hente den første værdi, Er der nogen der kan se hvad jeg gør forkert. Her er scriptet: <html>
<head> <title>New Page 1</title> </head>
<body> <% 'Hendt den valgte pageid pageid = Request.Form("pageid")
Set Conn = Server.CreateObject("ADODB.Connection") connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("log.mdb") Conn.Open connStr %>
<form name="sels" method="post"> <p><select name="pageid" onchange="this.form.submit();" size="1"> <% 'Find og list alle med parent=0 SQL = "SELECT pageID, title FROM tabelnavn WHERE parent = 0 ORDER BY pageID" Set rs = Conn.Execute(SQL) do while not rs.EOF Response.Write "<option value=""" & rs("pageid") & """" if CStr(pageid) = CStr(rs("pageid")) then Response.Write " selected " Response.Write ">" & rs("title") & "</option>" rs.Movenext loop %> </select> <br> <select name="undermemenuer" size="1"> <% 'Find alle under menuer til den valgt menu if pageid <> "" then SQL = "SELECT pageID, title FROM afdeling WHERE parent = " & pageid & " ORDER BY pageID" Set rs = Conn.Execute(SQL) do while not rs.EOF Response.Write "<option value=""" & rs("pageid") & """>" & rs("title") & "</option>" rs.Movenext loop end if %> </select> </p> </form> </body> </html>
<form name="sels" method="post"> <p><select name="pageid" onchange="this.form.submit();" size="1"> <% 'Find og list alle med parent=0 SQL = "SELECT pageID, title FROM tabelnavn WHERE parent = 0 ORDER BY pageID" Set rs = Conn.Execute(SQL) do while not rs.EOF Response.Write "<option value=""" & rs("pageid") & """" if CStr(pageid) = CStr(rs("pageid")) then Response.Write " selected " Response.Write ">" & rs("title") & "</option>" rs.Movenext loop end if %> 'Får du ingen fejl? Ser ud som om der mangler en end if, men det kan godt väre det er mig der har stirret mig blind.
Synes godt om
Slettet bruger
21. maj 2004 - 10:36#2
Nej, jeg får ingen fejl på siden, den henter title i tabellen tabelnavn og så får jeg en tom dropdown under
og du er fuldkommen sikker på at du får en pageid ind?
Prøv lige at lave dette i toppen:
<% 'Hendt den valgte pageid pageid = Request.Form("pageid") if pageid = <> "" then response.write "ingen værdi<br><br>" else response.write "Værdien er: " & pageid end if
Synes godt om
Slettet bruger
21. maj 2004 - 14:18#4
Så får jeg denne fejl: Microsoft VBScript compilation error '800a03ea'
<% 'Find alle under menuer til den valgt menu if pageid <> "" then SQL = "SELECT pageID, title FROM afdeling WHERE parent = " & pageid & " ORDER BY pageID" Set rs = Conn.Execute(SQL) do while not rs.EOF Response.Write "<option value=""" & rs("pageid") & """>" & rs("title") & "</option>" rs.Movenext loop end if %>
og det er simpelthen fordi du forsøger at trække alle punkterne ud fra en db, hvor parent = ingenting
Prøv lige denne: SQL = "SELECT pageID, title FROM afdeling WHERE parent > 0 ORDER BY pageid"
'Hendt den valgte pageid pageid = Request.Form("pageid") if pageid = <> "" then response.write "Værdien er: " & pageid else response.write "ingen værdi<br><br>" end if
Synes godt om
Slettet bruger
21. maj 2004 - 14:37#9
Det forandrer desværre ikke noget. Jeg har selv på fornemmelsen at jeg ikke helt har forstået opbygningen af databasen. Jeg har en tabel som hedder Tabelnavn, i den er der 3 colums som hedder PageId, title , parent. Parent er sat til 0 i alle poster, og de andre er bare test o.s.v. Jeg får i første dropdownbox værdi af title som i dette tilfælde er prov1, prov2 o.s.v Den næste dropdown kan jeg også se, men den er tom.
hmmm, lyder som om du ikke har forstået db-opbygningen... normal er id fx. et autonummeringsfelt, men lad os da prøve at løse det ;)
skift denne:
SQL = "SELECT pageID, title FROM afdeling WHERE parent = " & pageid & " ORDER BY pageID"
med:
SQL = "SELECT pageID, title FROM afdeling WHERE parent = '" & pageid & "' ORDER BY pageID"
Synes godt om
Slettet bruger
21. maj 2004 - 14:52#15
Det ændrer ikke noget, jeg ændrer FROM afdeling til Tabelnavn fordi jeg har kun en tabel ? Nu har jeg ændret PageId til autonummerering og så får jeg - ingen værdi - på din test
Parent 0 = det øverste plan parent xx = referer til det plan som skal vises
fx. vil en parent 4 være det fjerde nivaeu
kan vi finde ud af at du sender scriptet/db eller andet, da det er svært at hjælpe når jeg kun har et nøglehul at kigge igennem... ;)
Synes godt om
Slettet bruger
21. maj 2004 - 15:01#17
Ja, her er hele scriptet, og DB title parent PageID prov1 0 1 prov2 0 2 Prov3 0 3 prov4 0 4 tekstfelt - talfelt - Autonummeringsfelt ASP: <html>
<head> <title>New Page 1</title> </head>
<body> <% 'Hendt den valgte pageid pageid = Request.Form("pageid") if pageid <> "" then response.write "Værdien er: " & pageid else response.write "ingen værdi<br><br>" end if
Set Conn = Server.CreateObject("ADODB.Connection") connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("log.mdb") Conn.Open connStr %>
<form name="sels" method="post"> <p><select name="pageid" onchange="this.form.submit();" size="1"> <% 'Find og list alle med parent=0 SQL = "SELECT pageID, title FROM tabelnavn WHERE parent = 0 ORDER BY pageID" Set rs = Conn.Execute(SQL) do while not rs.EOF Response.Write "<option value=""" & rs("pageid") & """" if CStr(pageid) = CStr(rs("pageid")) then Response.Write " selected " Response.Write ">" & rs("title") & "</option>" rs.Movenext loop %> </select> <br> <select name="undermenuer" size="1"> <% 'Find alle under menuer til den valgt menu if pageid <> "" then SQL = "SELECT pageID, title FROM tabelnavn WHERE parent = '" & pageid & "' ORDER BY pageID" Set rs = Conn.Execute(SQL) do while not rs.EOF Response.Write "<option value=""" & rs("pageid") & """>" & rs("title") & "</option>" rs.Movenext loop end if %> </select> </p> </form> </body> </html>
eeeehhhhhh, den lister prov1, prov2, prov3 og prov4 korrekt ikke...
ellers så forklar lige udførligt hvad det du vil.... for du har jo ingen undermenuer lagt i db'en...
skift lige denne ud igen: SQL = "SELECT pageID, title FROM tabelnavn WHERE parent = '" & pageid & "' ORDER BY pageID"
med: SQL = "SELECT pageID, title FROM tabelnavn WHERE parent = " & pageid & " ORDER BY pageID"
Synes godt om
Slettet bruger
21. maj 2004 - 15:11#19
Jeg vil gerne have at Select er afhængige af hinanden, hvis jeg vælger f.eks. prov1 skal jeg få disse valg i dropdown2- test1,test2, test3 osv. Hvis jeg vælger prov2, skal dropdown skifte til disse valg, test4, test5, test6 osv. Skal jeg oprettet tabeller med navn undermenuer og hvordan får jeg dem "bundet" sammen ?
Med parent referer du til det menupunkt som undermenuen tilhører. i dette tilfælde tilhører test4 menupunktet med pageid 2
håber du forstår ;)
Synes godt om
Slettet bruger
21. maj 2004 - 15:22#22
Det tror jeg jeg gør, men selv on min DB nu ser sådan ud får jeg stadig ikke noget resultat i drop nr. 2 Som jeg har forstået skulle jeg nu hvis jeg vælger prov2 få valgmulighederne - test4, test5 og test6
Synes godt om
Slettet bruger
21. maj 2004 - 15:25#23
Undskyld, den skulle bare lige tænke sig om . Yes, nu virker det, Tusind tak for hjælpen, lægger du et svar så du kan få dine point. Linda
her er et svar, men hvis jeg må komme med en lille rettelse ;)
<html> <head> <title>New Page 1</title> </head> <body> <form name="sels" method="post"> <p><select name="pageid" onchange="this.form.submit();" size="1"> <% Set Conn = Server.CreateObject("ADODB.Connection") connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("log.mdb") Conn.Open connStr SQL = "SELECT pageID, title FROM tabelnavn WHERE parent = 0 ORDER BY pageID" Set rs = Conn.Execute(SQL) do while not rs.EOF Response.Write "<option value=""" & rs("pageid") & """" if CStr(pageid) = CStr(rs("pageid")) then Response.Write " selected " end if Response.Write ">" & rs("title") & "</option>" rs.Movenext loop %> </select> <br> <select name="undermenuer" size="1"> <% undermenu = Request.Form("pageid") if undermenu <> "" then SQL = "SELECT pageID, title FROM tabelnavn WHERE parent = " & undermenu & " ORDER BY pageID" Set rs = Conn.Execute(SQL) do while not rs.EOF Response.Write "<option value=""" & rs("pageid") & """>" & rs("title") & "</option>" rs.Movenext loop else response.write "<option>Ingen menu"</option> end if
'laver et tjek på variablen har en værdi if undermenu <> "" then SQL = "SELECT pageID, title FROM tabelnavn WHERE parent = " & undermenu & " ORDER BY pageID" Set rs = Conn.Execute(SQL) do while not rs.EOF Response.Write "<option value=""" & rs("pageid") & """>" & rs("title") & "</option>" rs.Movenext loop
'Variablen er tom, så vi udskriver bare ingen menu else response.write "<option>Ingen menu"</option> end if
'og vi lukker lige basen igen.. Vi lukker jo al varmen ud ;) rs.close set rs = nothing %>
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.