dropdownboks som starter med værdi som er indtastet i tabel
hejsa
jeg er ved at lave et web interface hvor medlemmer kan tilmelde sig en tur. på redigeringssiden står navnet og så de ting der skal oplyses. eks. deltager hvor man har mulighed for at vælge ja, nej eller blankt i en dropdown boks. disse værdier har den slået op i en tabel. denne del fungere men hvis man har brug for at vænde tilbage og rette i indtastningen står alle dropdownboksene til den sidste værdi som er lagret i den tabel hvor tilladte valgmuligheder er opgivet og ikke på eksempelvis ja som man har valgt og som også er lagret for medlemmet. jeg har følgende kode til en dropdown boks.
strSQL = "Select * from ddbx where (feltnavn = 'a')" Set RS = Conn.Execute(strSQL) Response.Write "<select size='1' name='a'>" Do While Not rs.EOF Response.Write "<option selected value='" & RS("input") & "'>" & RS("input") & "</option>" RS.MoveNext Loop Response.Write "</select>" %> ddbx er den tabel hvor tilladte værdier er indtastet og medlemsværdierne er indtastet i en tabel der hedder data.
hvis der er nogen der har en ide til hvordan man kan løse dette problem så den lagrede værdi bliver valg i dropdownboksen ville det gøre mig glad.
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Grunden til at den sidste altid er valgt er at dropdowns kun kan have et element valgt og du vælger dem allesammen.
Du kunne f.eks. i dit gennemløb checke om rs("input") = rsdata("ddbxInputID") inden du vælger at den skal være selected. Her skal rsdata("ddbxInputID") opfattes som det felt i data der peger over på det element der er valgt i listen.
Lad os antage at selectedData indeholder værdien fra data som svarer til det element i ddbx der er valgt i dropdown listen, så kan man f.eks. lave flg. loop:
Do While Not rs.EOF Response.Write "<option" If selectedData = rs("input") Then Response.Write " selected" End If Response.Write " value='" & RS("input") & "'>" & RS("input") & "</option>" RS.MoveNext Loop
jeg har prøvet at indsætte det sidste svar ind i min kode. nu er feltet blankt hver gang istedet for at sidste værdi er markeret. det er som om den ikke kigger i data tabellen om der står ja eller nej. den kolonne den skal slå værdien op i hedder a. min kode ser sådan ud nu: <% Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("/fpdb/database.mdb") Conn.Open DSN
strSQL = "Select * from ddbx where (feltnavn = 'a')" Set RS = Conn.Execute(strSQL) Response.Write "<select size='1' name='a'>"
Do While Not rs.EOF Response.Write "<option" If selectedData = rs("input") Then Response.Write " selected" End If Response.Write " value='" & RS("input") & "'>" & RS("input") & "</option>" RS.MoveNext Loop Response.Write "</select>" %>
Når du vender tilbage til en tilmelding for redigere, så er tilmeldingen gemt i databasen (går jeg ud fra :)) og i den række som tilmeldingen ligger i (i databasen) er der givetvis også et felt som indeholder den værdi der sidst blev valgt for "input"... det er den værdi du skal have fat i - altså tilmelding.valgtinput.
Det ville være lettere at forklare hvis du lige kunne smide mig nogle navne på tabeller og kolonner for de involverede tabeller, så kan der nok flikkes noget sammen :)
jeg har en tabel der hedder "data" den indeholder linier med id, medlemsnummer, navn adresse samt a, b, c. det er denne a værdi som bliver lagret. jeg har en tabel der hedder "ddbx" som indeholder id, feltnavn og input. eks. id=1, feltnavn=a og input=ja som indeholder de værdier det skal være muligt at vælge imellem i dropdownboksen.
' ----------------------------------------------------------------- ' Først og fremmest åbnes tabellen med indhold til dropdown ' og data lægges i et array (via en streng), da der ikke kan ' være to redordset åben på den samme forbindelse på samme tid. ' ----------------------------------------------------------------- dim selValues strSQL = "Select input from ddbx where (feltnavn = 'a')" Set RS = Conn.Execute(strSQL) Do while not RS.EOF if len(selValues) > 0 then selValues = selValues & "|" selValues = selValues & RS("input") RS.MoveNext Loop RS.Close
' ----------------------------------------------------------------- ' Find det medlem som er angivet i querystring eller form-collection ' (alt efter om forespørgslen kommer fra en formular eller et link ' med medlemsnummer i parameterlisten). ' ----------------------------------------------------------------- SQL = "SELECT * FROM data WHERE id = " & Request("dataid") Set RS = Conn.Execute(SQL)
' ----------------------------------------------------------------- ' ... Her opbygges formularen med de andre felter der skal ' vises ifm. tilmeldingen... ' og nu til dropned listen: ' Først deles de opsamlede data op, så de ligger i et array ' ----------------------------------------------------------------- dim arrSelValues arrSelValues = Split(selValues, "|")
' ----------------------------------------------------------------- ' Dernæst gennemløbes listen og der oprettes en dropned liste ' med en linie i listen for hvert element i array'et ' ----------------------------------------------------------------- Response.Write "<select size='1' name='a'>"
For i = 0 to UBound(arrSelValues) Response.Write "<option" If arrSelValues(i) = rs("a") Then Response.Write " selected" End If Response.Write " value='" & arrSelValues(i) & "'>" & arrSelValues(i) & "</option>" Next Response.Write "</select>"
' ----------------------------------------------------------------- '... og hernede vises resten af formularen... ' ----------------------------------------------------------------- %>
Er du sikker på at du ikke får en fejlmelding. Den kan nemlig ikke ses hvis den kommer indeni et option-tag.
Skriv Response.Write("Færdig") nederst i koden. Hvis det ikke kommer frem er der en fejl, som du vil kunne læse hvis du kigger på html'en
Synes godt om
Ny brugerNybegynder
Din løsning...
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.