Avatar billede gatez Nybegynder
09. marts 2003 - 19:56 Der er 9 kommentarer og
1 løsning

Fra select til input

Hejsa,

Jeg har en drop down boks på min hjemmeside som henter sin data fra en access database... Men jeg skal have lavet lidt om på det :-) Det skal være sådan at så snart man vælger fx. en Toyota i drop down boksen så skal den skrive det ID en Toyota har i et input feldt nede under drop down boksen... Vælger man en anden bil så skal ID´et også ændre sig... Kan det laves ?

Sådan ser min kode ud der henter alle bil mærker fra databasen:


    <select name="bilmarke" style="color: #000000; background-color: #ffffff; border: 1px solid #0066CC">
    <option value="">-----------------> Vælg Mærke <-----------------</option>
    <%
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../Database/Bodykits.dk/carstyle.mdb")
    strSQL = "SELECT * FROM biler ORDER BY Bil;"
    set rs = Conn.execute(strSQL)
    if rs.EOF then
    Response.write "<font face=""Arial"" size=""2"" Color=""RED""><center><b>Der er desværre ikke nogle biler i denne kategori endnu.<br>Bodykits.dk beklager!</b></center></font>"
    else
    Do Until rs.EOF
    %>
    <option value="<%=RS("Bil")%>"><%=RS("Bil")%></option>
    <%
    RS.MoveNext
    Loop
    end if

    Conn.Close
    Set Conn = Nothing
    %>
    </select>
Avatar billede mortrr Praktikant
09. marts 2003 - 20:00 #1
Først skal du lige flytte lidt rundt på din kode.
Det dur jo ikke at skrive "Desværre" teksten inden i din select.

Selve det at skrive id'en over i en input er rimeligt nemt:


    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../Database/Bodykits.dk/carstyle.mdb")
    strSQL = "SELECT * FROM biler ORDER BY Bil;"
    set rs = Conn.execute(strSQL)
    if rs.EOF then
    Response.write "<font face=""Arial"" size=""2"" Color=""RED""><center><b>Der er desværre ikke nogle biler i denne kategori endnu.<br>Bodykits.dk beklager!</b></center></font>"
    else
    %><select name="bilmarke" style="color: #000000; background-color: #ffffff; border: 1px solid #0066CC" onchange="this.form.inputid.value=this.options[this.options.selectedIndex].value">
    <option value="">-----------------> Vælg Mærke <-----------------</option>
    <%
    Do Until rs.EOF
    %>
    <option value="<%=RS("Bil")%>"><%=RS("Bil")%></option>
    <%
    RS.MoveNext
    Loop
    %></select><%
    end if

    Conn.Close
    Set Conn = Nothing
%><input name="inputid">

- Morten
Avatar billede mortrr Praktikant
09. marts 2003 - 20:01 #2
Sludder:
onchange="this.form.inputid.value=this.options[this.selectedIndex].value"
Avatar billede gatez Nybegynder
09. marts 2003 - 20:05 #3
Det virker men den skriver ikke ID. Hvis jeg vælger en Toyota så skriver den også Toyota i Input feldet.... Og mit problem er at der i value skal stå <%=RS("Bil")%>
Avatar billede mortrr Praktikant
09. marts 2003 - 20:12 #4
Den skriver det du har i value på din select, hvilket jo er <%=RS("Bil")%>
Hvad er du vil have skal stå i input? Er det ID'en for biler-tabellen?
Var det ikke nemmere at have den i value på selecten?
Du har ikke brug for at bilnavnet står der.
Avatar billede gatez Nybegynder
09. marts 2003 - 20:16 #5
Jeg for jeg skal gemme både ID og BilMærke i databasen... Så den gemmer Bilmærket som den henter select... Og ID´et fra Input boksen... Kan det ikke lade sig gøre sådan ?
Avatar billede mortrr Praktikant
09. marts 2003 - 20:24 #6
Jo - men hvis du allerede har en ID og et bilmærke som passer sammen (i tabellen Biler), så har du ikke behov for at gemme bilnavnet andre steder.
Kun ID'en så du kan referere til Biler tabellen.
Det andet gør man bare ikke.

Men hvis du absolut gerne vil have det, så sæt det på som en property på dine options, og hent den i stedet for value.

Men det er altså en dårlig idé.
Avatar billede gatez Nybegynder
09. marts 2003 - 20:28 #7
Jeg bliver nød til at gøre det sådan... For det er 2 helt forskællige databaser hvor jeg bare skal gemme begge ting... Hvordan kan jeg gøre siger du ?
Avatar billede gatez Nybegynder
09. marts 2003 - 20:44 #8
Hvor skal jeg sætte den property ??
Avatar billede gatez Nybegynder
09. marts 2003 - 20:49 #9
Kan jeg ikke få begge løsninger ?? Med property og så hvis du har et eksmple på hvordan jeg kan referere til Biler tabellen via et ID... ?
Avatar billede mortrr Praktikant
09. marts 2003 - 23:07 #10
OK - Du kan sætte ID-en ind i Value og hente text over i den anden input.

    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../Database/Bodykits.dk/carstyle.mdb")
    strSQL = "SELECT * FROM biler ORDER BY Bil;"
    set rs = Conn.execute(strSQL)
    if rs.EOF then
    Response.write "<font face=""Arial"" size=""2"" Color=""RED""><center><b>Der er desværre ikke nogle biler i denne kategori endnu.<br>Bodykits.dk beklager!</b></center></font>"
    else
    %><select name="bilmarke" style="color: #000000; background-color: #ffffff; border: 1px solid #0066CC" onchange="this.form.inputid.value=this.options[this.options.selectedIndex].text">
    <option value="">-----------------> Vælg Mærke <-----------------</option>
    <%
    Do Until rs.EOF
    %>
    <option value="<%=RS("ID")%>"><%=RS("Bil")%></option>
    <%
    RS.MoveNext
    Loop
    %></select><%
    end if

    Conn.Close
    Set Conn = Nothing
%><input name="inputid">
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