Avatar billede Slettet bruger
04. juni 2003 - 19:51 Der er 12 kommentarer og
1 løsning

tabel > array > dropdown

Hej,

Nogen der har en god idé til hvordan jeg kan returnere posterne fra et SQL kald til en array og efterfølgende smide værdierne i en <select> menu ? Det skal være på en performancemæssig god måde :)
Avatar billede ellebaek Nybegynder
04. juni 2003 - 19:59 #1
<%
i = 0
set rs = Server.CreateObject("ADODB.Connection")
sql = "SELECT * FROM tabel ORDER BY ID ASC"
rs.Open str
set rs = rs.execute(sql)
%>

<SELECT NAME="oplysning">
    <option>
<% while NOT rs.EOF
myArr(i) = rs.fields("felt")
%>
<OPTION><%= rs.Fields("felt")%>
<%
rs.Move(1)
i = i+1
wend
rs.Close
%>
</select>

Så ændre du bare felt og tabel, så det passer...
Avatar billede eagleeye Praktikant
04. juni 2003 - 20:05 #2
Du kan bruger rs.GetRows:


SQL = "SELECT id, navn FROM tabel"
Set rs = Conn.Exeute(SQL)
if not rs.eof then
  arrRecords = rs.getrows()
end if
rs.close
set rs = nothing
%>
<select name="valg">
<% for i = 0 to ubound(arrRecords,2) %>
  <option value="<%=arrRecords(0,i)%>"><%=arrRecords(1,i)%></option>
<% next %>
</select>
Avatar billede Slettet bruger
04. juni 2003 - 20:11 #3
eagleeye > Det var noget i den stil jeg tænkte på, men jeg får denne fejl :
Fejltype:
ADODB.Connection (0x800A0BB9)
Argumenterne har en forkert type eller er uden for det angivne område, eller der er opstået en konflikt mellem dem.
Avatar billede eagleeye Praktikant
04. juni 2003 - 20:13 #4
hov jeg kan ikke stave der mangler et c i executee i denne linje:

Set rs = Conn.Execute(SQL)
Avatar billede Slettet bruger
04. juni 2003 - 20:15 #5
heh, så den heller ikke..
Nå, men nu får jeg "Der opstod en Microsoft VBScript-kørselsfejl (0x800A0009)
Indekset er uden for området: '1'" i linien  <option value="<%=arrRecords(0,i)%>"><%=arrRecords(1,i)%></option>
Avatar billede Slettet bruger
04. juni 2003 - 20:15 #6
ahh, det er seføli' fordi jeg kun henter en attribut og derfor kun får et 1d array.. Har fixet det nu - tak for hjælpen
Avatar billede eagleeye Praktikant
04. juni 2003 - 20:16 #7
Du kan faktisk bruge GetStirng og lidt snide så gøre det kortere sådan her:


SQL = "SELECT id, navn FROM tabelhghg"
Set rs = Conn.Execute(SQL)
if not rs.eof then
  optionStr = "<option value=""" & rs.GetString(,,""">","</option><option value=""")
  optionStr = Left(optionStr,len(optionStr)-15 ) 'længden af <option value="
end if
rs.close
set rs = nothing
%>
<select name="valg"><%=optionStr%></select>
Avatar billede eagleeye Praktikant
04. juni 2003 - 20:17 #8
Den sidste kræver du hender to kolonne ud, den føste som ryger i value på option og den anden som bruge som det som vises. <option value=ID>NAVN</option>
Avatar billede Slettet bruger
04. juni 2003 - 20:22 #9
hmm, sidder lidt og tænker på om det ikke ville være smartere at lave en metode der modtager tabel, attribut i parameterlisten og så kalde den funktion når man fik brug for den?
Avatar billede Slettet bruger
04. juni 2003 - 20:48 #10
har lige strikket dette sammen:

<%
'Funktion til at oprette dropdown menu udfra databasetabel
function lavDropdown(paramTabel,paramAttribut)
    tabel = paramTabel
    attrib = paramAttribut
    SQL="SELECT " & attrib & " FROM " & tabel & ""
    Response.write(SQL)
    Response.end
    set rs = Conn.Execute(SQL)
        if not rs.eof then
            arrRecords = rs.getrows()
        end if
        rs.close
    set rs = nothing
    '//Opbygger listen%>
    <select name="<%= paramAttribut%>">
    <%  for i = 0 to ubound(arrRecords,2) %>
            <option value="<%= arrRecords(0,i)%>"><%= arrRecords(0,i)%></option>
    <%    next
    response.write "</select>"
end function
%>
Avatar billede Slettet bruger
04. juni 2003 - 20:48 #11
men jeg kan ikke få variablene i parameterlisten til at indgå i min SQL streng - hvordan gør man det?
Avatar billede eagleeye Praktikant
04. juni 2003 - 20:50 #12
Så skal du kalde din function:  lavDropdown("tabelnavn","id,navn")
Avatar billede Slettet bruger
04. juni 2003 - 20:51 #13
hehe.. naturligvis tak igen :)
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