Avatar billede harryfink Praktikant
22. november 2002 - 14:07 Der er 3 kommentarer og
2 løsninger

Checkbox value og database udtræk

Goddag,

Jeg har en formular som består af et variende antal checkboxes, da disse genereres udfra nogle valg man har truffet. Disse kan f.eks. se således ud:

---
<input type="checkbox" name="0" value="1">Dameklip<br>
<input type="checkbox" name="1" value="2">Herreklip<br>
<input type="checkbox" name="2" value="3">Børneklip<br>
<input type="checkbox" name="3" value="7">Vipper<br>
---

På næste side, som behandler formularen, gemmes antallet af boxe fra foregående side i variablen 'boxes'. Så tjekkes det om variablens indhold er over 0, dvs. om den er krydset af.

I så fald skal der udskrives en linie med variablen, f.eks. 1, 2, 3 eller 7 (som vist herover). Dette tal svarer til 'id' i en post i en database, som desuden indeholder 'ydelse'. I denne linie skal så også udskrives den passende ydelse. Men dette sker ikke! Her er koden, som jeg har forsøgt mig med:

---
For i=0 to boxes
    if CInt(Request(i)) > 0 then
        do until objRS("id") = CInt(Request(i)) or objRS.eof
            response.write objRS("ydelse") & CInt(Request(i)) & "<br>"
            objRS.movenext
        loop
    end if
next
---

Det, der udskrives er dette:

---
1
Dameklip2
Herreklip3
Børneklip7
Bryn7
Vask7
Føn7
---

Dette giver jo ingen mening... vel??

Håber I kan forklare mig hvad der går galt! :)

På forhånd tak,
Mikkel :)
Avatar billede harryfink Praktikant
22. november 2002 - 14:14 #1
I øvrigt - i databasen forholder det sig således:

1:Dameklip
2:Herreklip
3:Børneklip
4:Bryn
5:Vask
6:Føn
7:Vipper
Avatar billede capaj Nybegynder
22. november 2002 - 15:19 #2
hej harry,

jeg tror det der returneres er ok (givet den kode du har)

du har et dobbelt loop
1) for i=0 to boxes
2) do until objRS("id") = CInt(Request(i)) or objRS.eof

1) kører N antal gange (boxes)
2) kører indenfor 1). Hvis objRS.eof efter lookup af i'te Box vil resten af loookups også få værdien 7!

Simpel fix kunne være at erstatte koden til:
---
For i=0 to boxes
    if CInt(Request(i)) > 0 then
        do until objRS("id") = CInt(Request(i)) or objRS.eof
            response.write objRS("ydelse") & CInt(Request(i)) & "<br>"
            'objRS.movenext
            objRS.movefirst  ' re initialiser look up
      loop
    end if
next
---

mvh CAPAJ
Avatar billede harryfink Praktikant
25. november 2002 - 10:46 #3
Det du skriver giver desværre et uendeligt loop!
Avatar billede harryfink Praktikant
25. november 2002 - 16:19 #4
Jeg er desperat efter en løsning på dette problem, og har derfor sat pointsene op på 200! Håber nogen kan hjælpe!! :)
Avatar billede harryfink Praktikant
26. november 2002 - 09:27 #5
Her er den korrekte løsning... Fandt selv ud af den:

i=0

for i = 0 to boxes
    objRS.movefirst
    fundet = false
        do until fundet = true or objRS.eof
            if objRS("id") = CInt(Request(i)) then
                response.write objRS("ydelse") & "<hr>"
                fundet = true
            end if
        objRS.movenext
        loop
next

:)
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