Avatar billede leasing Nybegynder
14. marts 2006 - 10:19 Der er 11 kommentarer og
1 løsning

For each item in Request.Form

Nu har jeg bikset med det her i meget lang tid og kan stadig ikke få det til at virke.

Jeg har en FORM hvor der gemmenløbes en løkke for at hente alle spillere fra database:
- spillerID (blot tekst)
- spillernavn (blot tekst)
- point (type=text name=point"&rs("spillerID")
- kundetype (type=checkbox name=kundetype"&rs("spillerID")

Alle data skal så skrives ned i en pointtabel med:
- spillerID
- point
- kundetype (ja/nej felt)

Er der nogen der kan ryste det ud af ærmet?
Avatar billede softspot Forsker
14. marts 2006 - 10:23 #1
Kan du ikke smide din form herind? Det er lettere at arbejde med noget konkret HTML...

Såvidt jeg kan se, mangler du bla. at identficere spillernavn (dvs. påklistre rs("spillerID")), for ellers kan du ikke med sikkerhed parre navnet med resten af informaitonerne.
Avatar billede leasing Nybegynder
14. marts 2006 - 10:30 #2
Min form/løkke ser således ud:

"<form name=hold action=""default.asp?valg=opdaterpoint&r="&rundenrnu&""" method=post>"

'Dette køres i en løkke
"<td bgcolor=" & tblTDBgColor & ">" &  rs("spillerid") & "</td>"
"<td bgcolor=" & tblTDBgColor & ">" &  rs("spillernavn") & ", " & rs("navn") & "</td>"
"<td bgcolor=" & tblTDBgColor & "><input onkeyup=""this.value=(/^-?\d+$/.test(this.value))?this.value:this.value.replace(/^(-?\d*)\D?$/,'$1');"" class=Inputfelt1 name=""spid" & rs("spillerID") & """ type=""text"" size=""10"" style=height:18;font-size:10 value=" & p & "></td>"
"<td bgcolor=" & tblTDBgColor & "><input type=checkbox name=kundetype"&rs("spillerID")&"></td>"
'Slutter løkke

"<input class=submitknap type=submit value='Opdater' onclick='java script:return checkValidering(this)'>"

Det der er problemet er at få fat på alle 3 data som beskrevet.
Avatar billede fennec Nybegynder
14. marts 2006 - 11:11 #3
Du skal have lavet et hidden felt med spillerID'et i:

Response.write "<td bgcolor=" & tblTDBgColor & ">" &  rs("spillerid") & "<input type=""Hidden"" name=""SpillerID"" value="""& rs("spillerid") &"""></td>"
Response.write "<td bgcolor=" & tblTDBgColor & ">" &  rs("spillernavn") & ", " & rs("navn") & "</td>"
Response.write "<td bgcolor=" & tblTDBgColor & "><input onkeyup=""this.value=(/^-?\d+$/.test(this.value))?this.value:this.value.replace(/^(-?\d*)\D?$/,'$1');"" class=Inputfelt1 name=""spid" & rs("spillerID") & """ type=""text"" size=""10"" style=height:18;font-size:10 value=" & p & "></td>"
Response.write "<td bgcolor=" & tblTDBgColor & "><input type=checkbox name=kundetype"&rs("spillerID")&"></td>"

Så kan du gennemløbe alle spiler id'er med:
For each item in Request.Form("spillerID")
  response.write item
next
Avatar billede fennec Nybegynder
14. marts 2006 - 11:13 #4
I løkken kan du så hente de andre formelementer ud med:

For each item in Request.Form("spillerID")
  response.write item
  response.write Request.Form("spid"& item)
  response.write Request.Form("kundetype"& item)
next
Avatar billede leasing Nybegynder
14. marts 2006 - 13:06 #5
Så virker den...takker.
Jeg har dog et andet problem som jeg tror du kan løse.
Når den nu laver Formen med spillernavn, pointfelt og checkbox så ligger der i forvejen ikke nogen data i databasen. Derfor får jeg en fejl "error 80020009" når Formen skal laves. Er der en måde at tjekke om feltet "kundetype" i database er udfyldt eller ikke eksistere i databasen? Hvis ikke den eksistere skal den blot skrive en inputsætning med en checkbox som ikke er checked.

Har du løsningen til den?
Avatar billede fennec Nybegynder
14. marts 2006 - 13:14 #6
Er lidt svært at decode 80020009 til en fejl :o)
Der skulle gerne være en tekst også... Det er måske noget med "EOF or BOF error"??

Hvis det er, så de det dit din while sætning du skal ændre/flyte:

Forkert:
do
  ..
  rs.MoveNext
loop while not rs.eof

Rigtigt:
do while not rs.eof
  ..
  rs.MoveNext
loop
Avatar billede leasing Nybegynder
14. marts 2006 - 13:28 #7
Jeg bruger den rigtige.
Problemet opstår jo kun når jeg skal indsætte input-sætningen med checkboxen fordi den tjekker i Pointtabel for at se om der står 1 eller 0, men der er jo ingen data før jeg har indtastet data og det gør jeg jo i denne Form. Man må da kunne tjekke med noget If som gør at der ikke kommer fejl.
Avatar billede fennec Nybegynder
14. marts 2006 - 13:40 #8
Der tabte du vist mig....
Hvilken linje opstår fejlen i??
Avatar billede leasing Nybegynder
14. marts 2006 - 13:45 #9
okay...jeg prøver helt forfra.
Min POINTtabel er normalt tom. Når jeg indsætter point sker det jo via den form beskrevet øverst. Når den laver løkken i Formen, så kommer den jo til feltet "Kundetype". Her tester den om feltet er 0 eller 1. Hvis 1 så checked, men da der ingen data er i databasen så melder den fejl. Derfor må der noget If et-eller-andet til for at tjekke.
Avatar billede fennec Nybegynder
14. marts 2006 - 13:52 #10
Kan du ikke lige vise de linjer, for jeg kan ikke se noget tjek i den kode du har vist her (eller er det mig der er blind??)
Avatar billede leasing Nybegynder
14. marts 2006 - 14:28 #11
"<td bgcolor=" & tblTDBgColor & ">" &  rs("spillerid") & "<input type=Hidden name=spillerID value="&rs("spillerid")&"></td>"
"<td bgcolor=" & tblTDBgColor & ">" &  rs("spillernavn") & ", " & rs("navn") & "</td>"
"<td bgcolor=" & tblTDBgColor & "><input onkeyup=""this.value=(/^-?\d+$/.test(this.value))?this.value:this.value.replace(/^(-?\d*)\D?$/,'$1');"" class=Inputfelt1 name=""point" & rs("spillerID") & """ type=""text"" size=""10"" style=height:18;font-size:10 value=" & p & "></td>"
if not isNull(rsPoint("kundetype")) then
    If rsPoint("kundetype") = 1 Then
        "<td bgcolor=" & tblTDBgColor & "><input type=checkbox name=kundetype"&rs("spillerID")&" checked>Ny kunde</td>"
    Else
        "<td bgcolor=" & tblTDBgColor & "><input type=checkbox name=kundetype"&rs("spillerID")&">Ny kunde</td>"
    End If
else
    "<td bgcolor=" & tblTDBgColor & "><input type=checkbox name=kundetype"&rs("spillerID")&">Ny kunde</td>"
end if
Avatar billede fennec Nybegynder
14. marts 2006 - 14:48 #12
Du bliver nød til at tjekke for eof først:

isChecked = false
if not rsPoint.eof then
  if rsPoint("kundetype")&"" = "1" then isChecked = true
end if
if isChecked then
  "<td bgcolor=" & tblTDBgColor & "><input type=checkbox name=kundetype"&rs("spillerID")&" checked>Ny kunde</td>"
else
  "<td bgcolor=" & tblTDBgColor & "><input type=checkbox name=kundetype"&rs("spillerID")&">Ny kunde</td>"
end if
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