Avatar billede henrik2000 Nybegynder
27. marts 2001 - 15:16 Der er 16 kommentarer og
1 løsning

dropdownboks og databaser

Hej!
jeg vil gerne vise en par dropdownbokse på en asp-side med indholdet fra en database. Jeg har f.eks. et felt i databasen der hedder \"navn\" og et der hedder \"status\".

Så vil jeg gerne vise en dropdownboks med alle de navne hvor status er = 1, og en anden dropdownboks med alle de navne hvor status er = 2.

Derudover skal navnet i dropdownboksen fungerer som et link, dvs. hver gang man klikker på et navn, så skal man hoppe over på en anden asp-side.

Er der nogen der kan hjælpe her??? Meget gerne kodeeksempler!!!


Avatar billede ruderkonge Nybegynder
27. marts 2001 - 15:47 #1
Jeg har koden med 30 point er for lidt
Avatar billede henrik2000 Nybegynder
27. marts 2001 - 15:51 #2
du kan da godt få flere, men jeg ved ikke lige hvordan jeg giver dig det...

Avatar billede tommyf Nybegynder
27. marts 2001 - 15:53 #3
Sådan her for den med 1:

    <select size=\"1\" name=\"navig\" onChange=\"window.open(this.options[this.selectedIndex].value,\'hovedramme\')\">
    <option>Vælg sommerhus...</option>
    <option>-------------------------</option>
    <% Do While Not Record.EOF %>
    <% If Record(\"Status\") = 1 Then %>
    <option value=\"SIDE.ASP?id=<% Response.Write Record (\"Link?\") %>\"><% Response.Write Record (\"NAVN\") %>,
</option>
    <%
    else
    end if
    %>
    <%
    Record.MoveNext
    Loop
    %>
    <option>-------------------------</option>
    </select>
Avatar billede tommyf Nybegynder
27. marts 2001 - 15:55 #4
Håber du forsåt eksemplet :o)
Den hvor der står \"Vælg sommerhus\", kan du bare skrive hvad der skal stå hvis ikke andet er valgt, den tager så Oog skriver NAVN, hvis dettes status er = 1.
Hvor har du gemt linket?
Det skal erstatte:
SIDE.ASP?id=<% Response.Write Record (\"Link?\") %>
Avatar billede ruderkonge Nybegynder
27. marts 2001 - 16:08 #5
<%

\' her laves formen
Response.write\"<form action=\'default.asp\' name=\'selecter\'>\"
\' her laves select, bemærk : onchange
response.write\"<select style=\'width:150;\' onchange=\'return GotoURL()\' name=\'sendinfo\' size=1>\"

if request(\"side\") <> \"\" then
        SqlQ = \"Select * from tabel where streng id\" & request(\"id\")  & \" order by HostingPris ASC\"
else \' ellers skiftes til viste select
        SqlQ = \"Select * from tabel order by kriterie ASC\"
end if
        Set retur_SqlQ = Connection.execute(SqlQ)
        if not retur_SqlQ.eof then
        do while not retur_SqlQ.EOF
            if retur_SqlQ(\"HostingID\") <> request(\"hosting\") then
            Response.write\"<option value=\'\" & retur_SqlQ(\"ID\") & \"\'>\" & retur_SqlQ(\"navn\") & \"</option>\"           
            end if
        retur_SqlQ.movenext
        Loop
        end if
        response.write\"</select>\"
       
        \' herefter komme onchange scriptet
%>       
        <script language=\"javascript\">
<!--
function GotoURL() {
windowURL = \"Default.asp?side=\" + document.selecter.sendinfo.value;
window.location.href = windowURL;
}
// -->
</script>
Avatar billede ruderkonge Nybegynder
27. marts 2001 - 16:08 #6
<%

\' her laves formen
Response.write\"<form action=\'default.asp\' name=\'selecter\'>\"
\' her laves select, bemærk : onchange
response.write\"<select style=\'width:150;\' onchange=\'return GotoURL()\' name=\'sendinfo\' size=1>\"

if request(\"side\") <> \"\" then
        SqlQ = \"Select * from tabel where streng id\" & request(\"id\")  & \" order by HostingPris ASC\"
else \' ellers skiftes til viste select
        SqlQ = \"Select * from tabel order by kriterie ASC\"
end if
        Set retur_SqlQ = Connection.execute(SqlQ)
        if not retur_SqlQ.eof then
        do while not retur_SqlQ.EOF
            if retur_SqlQ(\"HostingID\") <> request(\"hosting\") then
            Response.write\"<option value=\'\" & retur_SqlQ(\"ID\") & \"\'>\" & retur_SqlQ(\"navn\") & \"</option>\"           
            end if
        retur_SqlQ.movenext
        Loop
        end if
        response.write\"</select>\"
       
        \' herefter komme onchange scriptet
%>       
        <script language=\"javascript\">
<!--
function GotoURL() {
windowURL = \"Default.asp?side=\" + document.selecter.sendinfo.value;
window.location.href = windowURL;
}
// -->
</script>
Avatar billede ruderkonge Nybegynder
27. marts 2001 - 16:10 #7
Det dur sgu ikke det lort...fandme noget bøvl - nemmere at hardcode noget nyt
Avatar billede henrik2000 Nybegynder
27. marts 2001 - 16:17 #8
Hej Tommyf,

jeg er startet med dit eksempel:

Helt præcist ser min kode således ud nu:

<select size=\"1\" name=\"navig\" onChange=\"window.open(this.options[this.selectedIndex].value,\'hovedramme\')\"> 
    <option>-------------------------</option>
    <% Do While Not rs.EOF %>
    <% If rs(\"status\") = 1 Then %>
    <option value=\"<%=rs(\"link\")%>\"?id=<% Response.Write rs(\"link\")%>\"><% Response.Write rs(\"fuldenavn\") %>
</option>
    <%
    else
    end if
    %>
    <%
    rs.MoveNext
    Loop
    %>
    <option>link2</option>
    </select>

Det virker, men:
den viser kun den ene record fra databasen med status = 1 (jeg har flere). \"fuldenavn\" er det navn jeg gerne vil have i dropdownboksen. Linket har jeg lagt i databasen i et felt der hedder \"link\".

Så hvordan viser jeg flere (alle dem med status = 1) i dropdownboksen???








Avatar billede henrik2000 Nybegynder
27. marts 2001 - 16:20 #9
Lige nu viser den 2 ting i dropdownboksen, det første navn fra databasen fra feltet \"fuldenavn\", efterfulgt af \"link2\"...

Avatar billede tommyf Nybegynder
27. marts 2001 - 16:24 #10
<option value=\"<%=rs(\"link\")%>\"><%=(\"fuldenavn\") %></option>

Prøv at sætte ovenstående linje ind i stedet. Hvad står der i feltet \"link\"? F.eks: http://www.minside.dk/hej.htm ?
Avatar billede henrik2000 Nybegynder
27. marts 2001 - 16:28 #11
Ja, nu virker det. Mange tak!!!!

Jeg fandt ud af at man også kunne skrive:

<% If rs(\"id\") = 35 or rs(\"id\") = 37 Then %>

idet er unikt felt fra databasen.

Avatar billede tommyf Nybegynder
27. marts 2001 - 16:32 #12
Ja, men så tager den jo kun de to felter (35,37), i stedet for alle dem med Status = 1
Avatar billede henrik2000 Nybegynder
27. marts 2001 - 16:34 #13
ja, men hvis man kun har 2 felter så er det jo fint nok. Men dit forslag er bedre så man ikke hele tiden skal ind og ændre i den linie med id`et, hvis der kommer flere på senere.

Avatar billede burningice Nybegynder
27. marts 2001 - 23:33 #14
hmmm... jeg vil nu gøre det sådan her

<% strSQL1 = \"SELECT * FROM tabel WHERE (status =\"1\")
set rs1 = conn.execute(strSQL1)

strSQL2 = \"SELECT * FROM tabel WHERE (status =\"2\")
set rs2 = conn.execute(strSQL2) %>

<form method=\"POST\" action=\"view.asp\">
<select size=\"1\" name=\"status\">
<% Do Until rs1.EOF %>
<option value=\"<%=rs1(\"id\")%>\"><%=RS1(\"navn\")%></option>
<% RS1.MoveNext
Loop %> 
</select><input type=\"submit\" value=\"View\" name=\"View\">
</form>

<p>

<form method=\"POST\" action=\"view.asp\">
<select size=\"1\" name=\"status\">
<% Do Until rs2.EOF %>
<option value=\"<%=rs2(\"id\")%>\"><%=RS2(\"navn\")%></option>
<% RS2.MoveNext
Loop %> 
</select><input type=\"submit\" value=\"View\" name=\"View\">
</form>

på view.asp laver du så en sql query der ser sådan her ud

strSQL = \"SELECT * FROM tabel where (id = \"& request.form(\"status\") &\")\"
set rs = conn.execute(strSQL)

så kan du skrive data, f.eks. <%=rs(\"id\") & \" - \" & =rs(\"navn\")%>

see the point ??
Avatar billede burningice Nybegynder
27. marts 2001 - 23:34 #15
du skal nok lige fjerne = ved rs(\"navn\") ...
Avatar billede henrik2000 Nybegynder
28. marts 2001 - 08:28 #16
ok - tak for de mange gode svar! Nu kan jeg lave det på flere forskellige måder!

Avatar billede henrik2000 Nybegynder
02. april 2001 - 13:01 #17
lige et tillægsspørgsmål:

hvordan undgår man at siden åbner op i et nyt vindue?

Det sker jo med window.open...

onChange=\"window.open(this.options[this.selectedIndex].value,\'hovedramme\')\">


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