Avatar billede tzag_dk Nybegynder
03. februar 2005 - 12:42 Der er 5 kommentarer og
1 løsning

for next med et array

Hej

Jeg har et problem. I denne multiple select skriver den navnet 2 gange, sådan her:
IT
IT
Web Design
Web Design

Jeg kan ikke lige se hvad der kan være galt, her er koden:

<select name="specialty_id" class="border" multiple size="5">
<%
SQLspecialty_id = "SELECT DISTINCT * FROM specialty ORDER BY specialty"
Set RSspecialty_id = Conn.execute(SQLspecialty_id)

    arr = Split(RSshow("specialty_id"),",")

        Do While Not RSspecialty_id.EOF

            for i = CInt(lbound(arr)) to CInt(ubound(arr))
                if CInt(arr(i)) = CInt(RSspecialty_id("id")) then

                    SQLspecialty_specialty = "SELECT * FROM specialty WHERE id = '"&CInt(arr(i))&"'"
                    Set RSspecialty_specialty = Conn.execute(SQLspecialty_specialty)

                    response.Write("<option value='"&CInt(arr(i))&"' selected>"&RSspecialty_specialty("specialty")&"</option>")

                else

                    response.Write("<option value='"&RSspecialty_id("id")&"'>"&RSspecialty_id("specialty")&"</option>")

                end if

            next

        RSspecialty_id.MoveNext
        Loop
%>
</select>


På forhånd tak :o)
// Rene
Avatar billede eagleeye Praktikant
03. februar 2005 - 18:03 #1
Den vil udskrive dem lige så mange gange som der er elementer i arrayet arr.

Du har i princippet to loop et på recordsetet som looget igennem for hver record og så har du en for sætning som for hvert element i arrayet udksirver en <option>. Det liger noget hvor du vil havde markeret de items som er valgt.

Prøv noget i stil med



<select name="specialty_id" class="border" multiple size="5">
<%
SQLspecialty_id = "SELECT DISTINCT * FROM specialty ORDER BY specialty"
Set RSspecialty_id = Conn.execute(SQLspecialty_id)

    arr = Split(RSshow("specialty_id"),",")

        Do While Not RSspecialty_id.EOF

            for i = CInt(lbound(arr)) to CInt(ubound(arr))
              fundet=false
                if CInt(arr(i)) = CInt(RSspecialty_id("id")) then
                  fundet=true
                    SQLspecialty_specialty = "SELECT * FROM specialty WHERE id = '"&CInt(arr(i))&"'"
                    Set RSspecialty_specialty = Conn.execute(SQLspecialty_specialty)

                    response.Write("<option value='"&CInt(arr(i))&"' selected>"&RSspecialty_specialty("specialty")&"</option>")

                end if
            next 
            if fundet=false then
                response.Write("<option value='"&RSspecialty_id("id")&"'>"&RSspecialty_id("specialty")&"</option>")
            end if

        RSspecialty_id.MoveNext
        Loop
%>
</select>
Avatar billede tzag_dk Nybegynder
03. februar 2005 - 18:30 #2
Hej.
Nu begynder det at ligne noget.
Før skrev den sådan her:

IT (valgt)
IT
Reklame (valgt)
Reklame
Udlejning af telte
Udlejning af telte
Web Design (valgt)
Web Design

Nu skriver den det sådan her:
IT (valgt)
IT
Rekalme (valgt)
Udlejning af telte
Web Design (valgt)
Web Design
Avatar billede eagleeye Praktikant
03. februar 2005 - 18:44 #3
fundet=false bliver vist sat en gang for sent det skal være lige før for sætningen så prøv sådan her:


<select name="specialty_id" class="border" multiple size="5">
<%
SQLspecialty_id = "SELECT DISTINCT * FROM specialty ORDER BY specialty"
Set RSspecialty_id = Conn.execute(SQLspecialty_id)

    arr = Split(RSshow("specialty_id"),",")

        Do While Not RSspecialty_id.EOF
          fundet=false
            for i = CInt(lbound(arr)) to CInt(ubound(arr))
                if CInt(arr(i)) = CInt(RSspecialty_id("id")) then
                  fundet=true
                    SQLspecialty_specialty = "SELECT * FROM specialty WHERE id = '"&CInt(arr(i))&"'"
                    Set RSspecialty_specialty = Conn.execute(SQLspecialty_specialty)

                    response.Write("<option value='"&CInt(arr(i))&"' selected>"&RSspecialty_specialty("specialty")&"</option>")

                end if
            next 
            if fundet=false then
                response.Write("<option value='"&RSspecialty_id("id")&"'>"&RSspecialty_id("specialty")&"</option>")
            end if

        RSspecialty_id.MoveNext
        Loop
%>
</select>
Avatar billede tzag_dk Nybegynder
03. februar 2005 - 18:48 #4
Jamen, du er jo en supermand :o) Det virker bare!

Lige et hurtig spm, kan man lave så at det ikke er nødvendigt at holde CTRL nede når man vælger flere?
Avatar billede eagleeye Praktikant
03. februar 2005 - 18:54 #5
Det ved jeg ikke om man kan, hvis man kan er det noget javascript man skal havde bygget på select feltet så det virker på en lidt anden måde.
Avatar billede tzag_dk Nybegynder
03. februar 2005 - 19:04 #6
ok, jeg vil prøve at kikke efter det.
Ellers vil jeg bare sige tusinde tak for hjælpen!

God aften :o)
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