Avatar billede slapstick Nybegynder
09. juli 2004 - 10:50 Der er 4 kommentarer og
2 løsninger

dynamisk checkbox/database helvede

jeg har to tabeller
nr 1 med nogle forskellige services i og nr 2 hvor der står et brugerid et serviceid og en expiredate

jeg har så en side der viser hvilke services en bruger har ud fra tabel nr 2

den viser dynamisk en checkbox for hver service der er i tabel nr 1 og laver så et flueben i dem som brugeren har(ud fra tabel nr 2)

det virker os fint som det skal...
meningen er så at man skal kunne klikke services af og på med de checkbokse der

mit problem er at jeg dynamisk skal hente dataen fra de checkbokse der og sammenligne dataen med dataen fra tabel nr2 så jeg dynamisk kan tilføje eller fjerne services for en bruger

nogen der har nogle forslag til hvordan jeg dynamisk looper igennem request.form objektet og samtidig sammenligner med mit recordset fra tabel nr 2 ?
Avatar billede ellebaek Nybegynder
09. juli 2004 - 11:00 #1
jeg plejer i stedet at sætte alle checkboxene til false, og derefter sætter jeg alle dem til true der er valgt..

Det synes jeg er en del nemmere..

du kan løbe alle poster igennem med:

for each item in request.form
iten = formens navn
request.form(item) = formens indhold.
next

Dog skal du så her være opmærksom på at du kun får indholdet med fra de poster der er markeret til true..
Det er derfor jeg selv sætter dem alle til false til at starte med, for derefter at opdatere dem der er valgt i formen..

Håber det var forståeligt..
Avatar billede slapstick Nybegynder
09. juli 2004 - 11:11 #2
hmm ja et af problemerne er netop at man kun får dem der er true hehehehe
men jeg tror jeg har fået en ide.. gemmer dem brugeren har i forvejen i session objektet og sammenligner så request.form strengen med session objektet
Avatar billede slapstick Nybegynder
09. juli 2004 - 11:47 #3
ok nu looper jeg igennem request.form objektet sådan her

For Each Item In Request.Form

    If formStr = "" Then

        If Not Request.Form(Item) = brugerid AND Not Request.Form(Item) = "Update" Then

            formStr = Request.Form(Item)

        End If

    Else

        If Not Request.Form(Item) = brugerid AND Not Request.Form(Item) = "Update" Then

            formStr = formStr & "," & Request.Form(Item)

        End If

    End If


next

men så får jeg bare den her streng:
on,on,on,on

dvs jeg ved ik hvilke checkbokse der er trykket på :( hvordan får jeg navnet med på checkboksen så jeg ved hvilke der er true/false?
Avatar billede slapstick Nybegynder
09. juli 2004 - 11:48 #4
hmmm det slår mig lige det jo nok er Item.. DOH
Avatar billede slapstick Nybegynder
09. juli 2004 - 14:30 #5
nå jeg fik det sgu til at makke ret

det endelige resultat er her:

<%

BrugerID = Request.Form("brugerid")

FormStr = ""

For Each Item In Request.Form

    If FormStr = "" Then

        If Not Request.Form(Item) = BrugerID AND Not Request.Form(Item) = "Update" Then

            FormStr = Item

        End If

    Else

        If Not Request.Form(Item) = BrugerID AND Not Request.Form(Item) = "Update" Then

            FormStr = FormStr & "," & Item

        End If

    End If


Next

If FormStr = "" Then


    RemUserServices = "DELETE FROM userservices WHERE brugerid = '" & BrugerID & "'"
    Conn.Execute(RemUserServices)

Else

   

    FormArr = Split(FormStr,",")
   
    SessionStr = Session("licenseStr")
    SessionArr = Split(SessionStr,",")
   
    DelService = ""
   
    a = 0
   
    Do While a <= Ubound(SessionArr)
   
        For i=0 To Ubound(FormArr)
   
            If CStr(SessionArr(a)) = CStr(FormArr(i)) Then
   
                DelService = "no"

                Exit For
   
            Else
   
                DelService = "yes"
   
            End If   
   
        Next

        If DelService = "yes" Then

            RemUserService = "DELETE FROM userservices WHERE brugerid = '" & BrugerID & "' AND serviceid = '" & SessionArr(a) & "'"
            Conn.Execute(RemUserService)

        End If
   
        a = a + 1
   
    Loop
   
    ExpireDate = "2004-12-12"

    a = 0
   
    If SessionStr = "" Then

        Do While a <= Ubound(FormArr)

            AddUserService = "INSERT INTO userservices (brugerid, serviceid, expiredate) VALUES ('" & BrugerID & "','" & FormArr(a) & "','" & ExpireDate & "')"
            Conn.Execute(AddUserService)
   
            a = a + 1
   
        Loop

    Else

        Do While a <= Ubound(FormArr)

            For i=0 To Ubound(SessionArr)

                If CStr(SessionArr(i)) = CStr(FormArr(a)) Then
   
                    AddService = "no"

                    Exit For
   
                Else
   
                    AddService = "yes"
               
   
                End If   
   
            Next

            If AddService = "yes" Then           

                AddUserService = "INSERT INTO userservices (brugerid, serviceid, expiredate) VALUES ('" & BrugerID & "','" & FormArr(a) & "','" & ExpireDate & "')"
                Conn.Execute(AddUserService)

            End If
   
            a = a + 1
   
        Loop

    End If
   
    InfoSQLStr = ""
   
    For i=0 to Ubound(FormArr)
   
        If InfoSQLStr = "" Then
   
            InfoSQLStr = " WHERE serviceid = '" & FormArr(i) & "'"
   
        Else
   
            InfoSQLStr = InfoSQLStr & " OR serviceid = '" & FormArr(i) & "'"
   
        End If
       
   
    Next
   
    InfoSQLStr = "SELECT servicetype,displayname FROM services" & InfoSQLStr
    Set RsServices = Conn.Execute(InfoSQLStr)

End If

%>


ellebaek hvis du vil ha nogle point for din hjælp så smid lige et svar :)
Avatar billede ellebaek Nybegynder
09. juli 2004 - 21:41 #6
jeg smider et svar så ;-)
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