Avatar billede scout Nybegynder
30. januar 2005 - 23:03 Der er 12 kommentarer

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.

<%
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 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.

på forhånd tak.
Avatar billede softspot Forsker
30. januar 2005 - 23:20 #1
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.
Avatar billede softspot Forsker
30. januar 2005 - 23:22 #2
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
Avatar billede scout Nybegynder
31. januar 2005 - 09:09 #3
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>"
%>
Avatar billede ldanielsen Nybegynder
31. januar 2005 - 12:29 #4
Hvilken datatype er input?
Avatar billede scout Nybegynder
31. januar 2005 - 16:37 #5
tekst
Avatar billede softspot Forsker
31. januar 2005 - 16:39 #6
Har du husket at tildele variablen selectedData den værdi som svarer til det valgte element?
Avatar billede scout Nybegynder
31. januar 2005 - 16:45 #7
hvordan gør jeg det?
Avatar billede scout Nybegynder
31. januar 2005 - 16:46 #8
den værdi jeg som den skal svare til skal den finde i tabellen data i kolonnen a
Avatar billede softspot Forsker
31. januar 2005 - 16:59 #9
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 :)
Avatar billede scout Nybegynder
31. januar 2005 - 17:36 #10
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.
Avatar billede softspot Forsker
31. januar 2005 - 18:59 #11
<%
' -----------------------------------------------------------------
' Åben databaseforbindelsen
' -----------------------------------------------------------------
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("/fpdb/database.mdb")
Conn.Open DSN

' -----------------------------------------------------------------
' 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...
' -----------------------------------------------------------------
%>
Avatar billede ldanielsen Nybegynder
02. februar 2005 - 11:26 #12
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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester