Avatar billede leasing Nybegynder
18. januar 2007 - 22:15 Der er 14 kommentarer og
1 løsning

Problem med "for each item in request.form"

Jeg har et problem med at hente alle mine værdier fra en form.
Først henter jeg alle mine spillere fra databasen med dertil 8 inputbokse for hver spiller. Alle inputbokse bliver udfyldt med data og herefter gemmes i database.
Jeg har problemer med at få alle data med over med "for each item in request.form".

Håber nogen har en god ide.
Avatar billede kalp Novice
18. januar 2007 - 22:16 #1
hvis noget kode så man ikke skal lege gætteleg.. det er det for sent til;o)
Avatar billede leasing Nybegynder
19. januar 2007 - 08:47 #2
Jamen så prøver jeg.

Det som jeg har og som virker fint er følgende:
Der køres en løkke som henter følgende fra databasen (spillerid, spillernavn, raekke, p)
Pt. har jeg 24 spillere
<table><tr>
<td bgcolor="&tblTDBgColor&"><a>"& rs("spillerid") & "</a></td>"
<td bgcolor="&tblTDBgColor&"><a>"& rs("spillernavn") & "</a>, " & rs("raekke") & "</td>"
<td bgcolor="&tblTDBgColor&"><input "&rundenrtjek&" onkeyup=""this.value=(/^-?\d+$/.test(this.value))?this.value:this.value.replace(/^(-?\d*)\D?$/,'$1');"" class=Inputfelt name=""spid"&rs("spillerid")&""" type=""text"" size=""10"" style=height:18;font-size:10 value=" & p & "></td>"
</tr></table>


for each item in request.form
    if len(request.form(item)) > 0  and item <> "rundeNr" then
        sID = mid(item,5)
        p  = request.form(item)
        SQL = "INSERT INTO POINTS (spillerID, rundeNr, point) VALUES('" & sID & "','" & rNR & "','" & p & "')"
        Conn.Execute(SQL)
    end if
next


Problemet er nu hvor jeg gerne vil have nedenstående ekstra felter med i min løkke hvor den henter mine 24 spillere:

<td bgcolor="&tblTDBgColor&"><input class=inputfelt type=text name=spilledekamp value=" & spilledekamp & "></td>"
<td bgcolor="&tblTDBgColor&"><input class=inputfelt type=text name=goal value=" & goal & "></td>"
<td bgcolor="&tblTDBgColor&"><input class=inputfelt type=text name=gul value=" & gul & "></td>"
<td bgcolor="&tblTDBgColor&"><input class=inputfelt type=text name=red value=" & red & "></td>"
<td bgcolor="&tblTDBgColor&"><input class=inputfelt type=text name=v value=" & v & "></td>"
<td bgcolor="&tblTDBgColor&"><input class=inputfelt type=text name=t value=" & t & "></td>"
<td bgcolor="&tblTDBgColor&"><input class=inputfelt type=text name=u value=" & u & "></td>"                                                 

de ekstra felter skal selvfølgelig også gemmes i database i tabellen POINTS.

Det giver selvfølgelig ikke rigtig nogen sammenhængende kode, men er det ikke blot at vise hvordan jeg trækker de her værdier ud fra input løkken "for each item in request.form" og herefter gemme dem i databasen?
Avatar billede leasing Nybegynder
20. januar 2007 - 14:05 #3
Er der ikke nogen som har et forslag?
Avatar billede kalp Novice
20. januar 2007 - 15:09 #4
jeg må indrømme at jeg ikke er helt med på hvad der skal ske.

du vil gerne have flere ting i din DB, men der jeg kender jo ikke helt til dine kolonner i din db.. om de er der eller hvordan.

hvis du er mere præcis så kan jeg godt nok godt svare
Avatar billede leasing Nybegynder
20. januar 2007 - 18:35 #5
Jeg prøver igen.

Jeg har en kode pt. som virker. Her lister den i en løkke spilleID, spillernavn, rakke og jeg kan skrive point i et inputfelt hvorefter jeg kan trykke på en knap og så opdatere den min POINTS tabel.
Dette er koden som den er nu:
----- Kører i en løkke hvor den henter værdier fra database -----
<table><tr>
<td bgcolor="&tblTDBgColor&"><a>"& rs("spillerid") & "</a></td>"
<td bgcolor="&tblTDBgColor&"><a>"& rs("spillernavn") & "</a>, " & rs("raekke") & "</td>"
<td bgcolor="&tblTDBgColor&"><input "&rundenrtjek&" onkeyup=""this.value=(/^-?\d+$/.test(this.value))?this.value:this.value.replace(/^(-?\d*)\D?$/,'$1');"" class=Inputfelt name=""spid"&rs("spillerid")&""" type=""text"" size=""10"" style=height:18;font-size:10 value=" & p & "></td>"
</tr></table>
------------------------------------------

Her gemmes alle data fra alle spillerID´er med point
for each item in request.form
    if len(request.form(item)) > 0  and item <> "rundeNr" then
        sID = mid(item,5)
        p  = request.form(item)
        SQL = "INSERT INTO POINTS (spillerID, rundeNr, point) VALUES('" & sID & "','" & rNR & "','" & p & "')"
        Conn.Execute(SQL)
    end if
next

Denne kode virker uden problemer.

Nu er det så at jeg skal have 7 ekstra inputfelter på min løkke som henter værdier fra databasen således, at den løkke der køre fra databasen henter spillerID, spillernavn, raekke, p, spilledekamp, goal, gul, red, v, t og u:

-------- Løkke som henter alle nævnte værdier fra database
<table><tr>
<td bgcolor="&tblTDBgColor&"><a>"& rs("spillerid") & "</a></td>"
<td bgcolor="&tblTDBgColor&"><a>"& rs("spillernavn") & "</a>, " & rs("raekke") & "</td>"
<td bgcolor="&tblTDBgColor&"><input class=inputfelt type=text name=spilledekamp value=" & spilledekamp & "></td>"
<td bgcolor="&tblTDBgColor&"><input class=inputfelt type=text name=goal value=" & goal & "></td>
<td bgcolor="&tblTDBgColor&"><input class=inputfelt type=text name=gul value=" & gul & "></td>
<td bgcolor="&tblTDBgColor&"><input class=inputfelt type=text name=red value=" & red & "></td>
<td bgcolor="&tblTDBgColor&"><input class=inputfelt type=text name=v value=" & v & "></td>
<td bgcolor="&tblTDBgColor&"><input class=inputfelt type=text name=t value=" & t & "></td>
<td bgcolor="&tblTDBgColor&"><input class=inputfelt type=text name=u value=" & u & "></td>
<td bgcolor="&tblTDBgColor&"><input "&rundenrtjek&" onkeyup=""this.value=(/^-?\d+$/.test(this.value))?this.value:this.value.replace(/^(-?\d*)\D?$/,'$1');"" class=Inputfelt name=""spid"&rs("spillerid")&""" type=""text"" size=""10"" style=height:18;font-size:10 value=" & p & "></td>"
</tr></table>
---------------------------

Når der trykkes på knap så skal alt gemmes i database i hver spillerID i en "for each item in request.form".

I bund og grund er det blot, at kunne trække en masse værdier fra inputfelter som er knyttet til nogle unikke spillerID´er og så få dem gemt i databasen ud for hver spillerID.

Håber det er til at forstå ellers ved jeg ikke hvordan jeg skal forklare det.
Avatar billede kalp Novice
20. januar 2007 - 19:04 #6
så du har faktisk kun et form element hvor du smider alle værdier i ? og det er denne

<input "&rundenrtjek&" onkeyup=""this.value=(/^-?\d+$/.test(this.value))?this.value:this.value.replace(/^(-?\d*)\D?$/,'$1');"" class=Inputfelt name=""spid"&rs("spillerid")&""" type=""text"" size=""10"" style=height:18;font-size:10 value=" & p & ">

eller må jeg se bort fra din kode for synes den er lidt underligt sat op til den løsning.. og så kan jeg lave et kodeeksempel til dig som gør det du vil med min egen data..
Avatar billede leasing Nybegynder
20. januar 2007 - 20:58 #7
Du må gerne se bort fra min opstilling, men der hvor jeg har problemet er jo hvor jeg har flere inputfelter end blot det ene. Som vist så har jeg disse inputfelter som jeg skal have overført til databasen:

<input class=inputfelt type=text name=spilledekamp value=" & spilledekamp & ">
<input class=inputfelt type=text name=goal value=" & goal & ">
<input class=inputfelt type=text name=gul value=" & gul & ">
<input class=inputfelt type=text name=red value=" & red & ">
<input class=inputfelt type=text name=v value=" & v & ">
<input class=inputfelt type=text name=t value=" & t & ">
<input class=inputfelt type=text name=u value=" & u & ">
<input "&rundenrtjek&" onkeyup=""this.value=(/^-?\d+$/.test(this.value))?this.value:this.value.replace(/^(-?\d*)\D?$/,'$1');"" class=Inputfelt name=""spid"&rs("spillerid")&""" type=""text"" size=""10"" style=height:18;font-size:10 value=" & p & ">

Men lad mig prøve at se dit kodeeksempel.
Avatar billede kalp Novice
20. januar 2007 - 21:09 #8
før jeg gør det.. har jeg så mulighed for at se det der live et sted?
Avatar billede leasing Nybegynder
20. januar 2007 - 22:46 #9
Desværre...det ligger lokalt.
Håber du stadig har mod på det.
Avatar billede erikjacobsen Ekspert
20. januar 2007 - 22:51 #10
Du skal kalde dine ekstra felter forskelligt, ud fra din spillerid: sID (eller hvad den nu hedder). SKITSE:

<input class=inputfelt type=text name=gul<?=sID?> value=" & gul & ">

Så kan du, hvor xxxxxxxx er navnet på feltet med spiller-id i:

for each item in request.form
    if len(request.form(item)) > 0  and item="xxxxxxx" then
        sID = mid(item,5)
        p  = request.form(item)
        gul = request.form("gul" & sID)
        '...osv

Bare en skitse - så du måske får en idé
Avatar billede erikjacobsen Ekspert
20. januar 2007 - 22:51 #11
Ja, ok, gammeldags ASP, så er det jo:

<input class=inputfelt type=text name=gul<%=sID%> value=" & gul & ">
Avatar billede erikjacobsen Ekspert
20. januar 2007 - 22:53 #12
item="xxxxxxx"  skal nok være en test med left (?) på de 4-5 første tegn - hvad de så end er. De hedder måske  i retning af "spil117"
Avatar billede leasing Nybegynder
14. december 2009 - 09:15 #13
Gammelt spørgsmål, jeg er ved at ryde op...er der nogen der vil lægge svar.
Avatar billede erikjacobsen Ekspert
14. december 2009 - 12:06 #14
Nej tak
Avatar billede leasing Nybegynder
14. december 2009 - 12:10 #15
lukker spørgsmål
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