Avatar billede simme Nybegynder
22. september 2003 - 19:35 Der er 7 kommentarer og
1 løsning

Sammenligne et array (1, 3, 7) med ID fra database

Jeg har en multi valgbox hvor jeg får de markerede valg sendt via en form. Eks. strFunktion = 1, 3, 8 hvis der er valgt tre forskellige funktioner.

Jeg ønsker at få de valgte funktioner markeret automatisk i multi-valgboxen.
Værdierne i strFunktion ligger i et felt i databasen men jeg har problemer med at sammenligne disse med funktionsID fra fra databasen. Det virker når der kun er markeret en funktion. Men hvordan kan jeg få den til at se alle værdierne i strFunktion igennem?

Her er min kode som jeg har problemer med:

<TD> <select name="Kredsfunktion[]" multiple>

<%
Dim medlem, med, rs
medlem = Request.Querystring("medlem")

SQL = "Select * FROM medlemmer WHERE medlnr="& medlem &" "
SET med = database.Execute(SQL)


SQLQuery = "Select * FROM klasser ORDER BY klasseid"
SET rs = database.Execute(SQLQuery)

DO While NOT RS.EOF

Response.Write("<option value=" &rs("klasseid"))


    IF ""&strFunktion = ""&rs("klasseid") THEN
Response.Write(" selected")
    END IF
   
Response.Write(">"&rs("klassen")&"")

rs.moveNext
LOOP
rs.Close()
%>

</select>
Avatar billede eagleeye Praktikant
22. september 2003 - 19:42 #1
Det bedste ville være at ligge de tal i strFunktion uden mellemrum så kan man bruge inStr til at tjekke om en ID skal vælges:

strFunktion "1,3,8"


Så kan du rette dene:

    IF ""&strFunktion = ""&rs("klasseid") THEN
Response.Write(" selected")
    END IF

Til dette:


    IF inStr(1, ","&strFunktion&",", ","&rs("klasseid")&",") > 0 THEN
Response.Write(" selected")
    END IF
Avatar billede simme Nybegynder
22. september 2003 - 19:48 #2
Det løser lidt af problemerne, nu bliver den først markerede (det første tal eks. 3 fra 3, 8, 9) vist ved hvert opslag selvom der vælges flere.

Men jeg ønsker at få market alle tre der er skrevet til databasen. Hvordan får jeg den til det?
Avatar billede eagleeye Praktikant
22. september 2003 - 19:58 #3
PRøv at medtage </option>

Ret
Response.Write(">"&rs("klassen")&"")

Til dette:
Response.Write(">"&rs("klassen")&"</option>")

og har du en </select> efter?
Avatar billede simme Nybegynder
22. september 2003 - 20:04 #4
jow jow det virker - juhuu

Jeg må tilstå at jeg manglede at fjerne mellemrummene fra strFunktion ;-)

Tak for hjælpen...
Avatar billede simme Nybegynder
22. september 2003 - 20:05 #5
Ligger du et svar - jeg fik vist oprettet et selv..?
Avatar billede eagleeye Praktikant
22. september 2003 - 20:06 #6
Ja det gør jeg ;)
Avatar billede simme Nybegynder
22. september 2003 - 20:07 #7
Det kunne forøvrigt være meget rart med en lille forklaring til inStr kommandoen - hvis du vil være så venlig?

inStr(1, ","&strFunktion&",", ","&rs("klasseid")&",")
Avatar billede eagleeye Praktikant
22. september 2003 - 20:15 #8
Instr kan bruges til at finde en streng i en anden streng. Den giver 0 tilbage hvis den ikke finde finde strengen man søger efter.

inStr(start, streng, finddette)

Grunden til der er "," omkring strFunktion er for at sætte komma omkring
"1,5,16"  bliver til ",1,5,16,"

Og så søger man efter eksvis hvis rs("klassen")=6:  ",6,"
og man søger ikke efter "6", hvis man ikke satte komma omkring ville den finde 6 i 16 og sige 6 også skulle vælges. Derfor det med ","
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