Avatar billede ingeman Seniormester
13. oktober 2007 - 17:29 Der er 17 kommentarer og
1 løsning

Hvordan får fat i alle felter og værdier

<%           
      For I=0 to 5
%>
          <tr>
            <td class=overskrift style="width:75px;nowrap"><%=Replace(Mid(RS.Fields("Art"),4)&"&nbsp;"&Right("00"&cStr(I),1)," ","&nbsp;")%></td>
            <td><input maxlength=4 class=tekstfelt type=text name="<%=Mid(RS.Fields("Art"),4)%>_EKS_<%=I%>" value="<%=RS.Fields("EKS"&cStr(I))%>"  TabIndex="<%=taller*18+I+1%>" ></td>
            <td><input maxlength=4 class=tekstfelt type=text name="<%=Mid(RS.Fields("Art"),4)%>_AKS_<%=I%>" value="<%=RS.Fields("AKS"&cStr(I))%>" TabIndex="<%=taller*18+I+7%>"></td>
            <td><input maxlength=4 class=tekstfelt type=text name="<%=Mid(RS.Fields("Art"),4)%>_VFKS_<%=I%>" value="<%=RS.Fields("VFKS"&cStr(I))%>" TabIndex="<%=taller*18+I+13%>"></td>
          </tr> 
<%           
      Next
%>

den her ligger i en form som submites

hvordan for jeg gennemløbet alle elementer fra formen ?
skal bruge værdier fra name og value ?
Avatar billede w13 Novice
13. oktober 2007 - 17:53 #1
Det skulle meget gerne være:

For Each Item In Request.Form
  Response.Write Item.Name&": "&Item.Value&"<br>"
Next
Avatar billede ingeman Seniormester
13. oktober 2007 - 17:58 #2
får den her fejl

Et objekt er obligatorisk: 'Rødsp_VFKS_0'
Avatar billede w13 Novice
13. oktober 2007 - 18:03 #3
Og hvad er Rødsp_VFKS_0 ?? Står der en linje? Er det overhovedet i den del, jeg gav dig, at fejlen opstår?
Avatar billede softspot Forsker
13. oktober 2007 - 18:12 #4
Aaah, det er nok sådan her:

For Each Item In Request.Form
  Response.Write Item.Name&": "&Request.Form(Item)&"<br>"
Next
Avatar billede softspot Forsker
13. oktober 2007 - 18:31 #5
Ups! Der var lige en fejl mere:

For Each Item In Request.Form
  Response.Write Item & ": " & Request.Form(Item) & "<br>"
Next

Item er nøglen til formfeltet i Request.Form collection-objektet (dvs. en streng) og den har ikke nogen egenskaber, derfor fejler koden som w13 foreslog.
Avatar billede w13 Novice
13. oktober 2007 - 19:06 #6
Jeg mener stadig, det skal være Item.Name, men tror du har ret i Request.Form(Item). Hvis ikke Request.Form(Item) virker, skal det være Request.Form(Item.Name)
Avatar billede softspot Forsker
13. oktober 2007 - 19:42 #7
Det er som jeg har skrevet (jeg har brugt den før) ;-)
Avatar billede ingeman Seniormester
14. oktober 2007 - 09:48 #8
Det virker det her:

    For Each Item In Request.Form
            Fart=split(item,"_")
               
            if UBound(fart)=2  then
                hart        =fart(0)
                kstype    =fart(1)
                ksnr        =fart(2)
                ksantal    =trim(Request.Form(Item))
                if ksantal<>"" then
                    Response.Write Item & ": " & Request.Form(Item) & "<br>"
                    Response.Write hart & ": " & ksantal & "<br>"
                   
                    loConn.Execute "UPDATE Landinger  SET Eks0='" & ksantal & "' WHERE ART='" & hart
                end if
            end if
        Next

Men jeg har kan ikke få det ind i databasen ?
Avatar billede softspot Forsker
14. oktober 2007 - 10:37 #9
Du mangler lige at afslutte denne linie:

  loConn.Execute "UPDATE Landinger  SET Eks0='" & ksantal & "' WHERE ART='" & hart

den skal se således ud:

  loConn.Execute "UPDATE Landinger SET Eks0='" & ksantal & "' WHERE ART='" & hart & "'"
Avatar billede ingeman Seniormester
14. oktober 2007 - 12:23 #10
Den skal faktisk se sådan ud

    loConn.Execute "UPDATE Landinger  SET " & kstype & "='" & ksantal & "' WHERE ART=" & Hart &"' AND Havn='" & Havn  & "'"

men den melder stadig fejl ?
Avatar billede softspot Forsker
14. oktober 2007 - 12:32 #11
Ja, vi kan jo kun tage udgangspunkt i det du viser os, så om den skal se anderledes ud er jo svært at gætte... ;-)

Men bort set fra det, kan jeg se du skal være overordentlig opmærksom på apostroffer, for det lader til at være en lille svaghed du har (se efter ART=) ;-)

    loConn.Execute "UPDATE Landinger  SET " & kstype & "='" & ksantal & "' WHERE ART='" & Hart &"' AND Havn='" & Havn  & "'"
Avatar billede ingeman Seniormester
14. oktober 2007 - 14:00 #12
Det virker nu - det med apostroffer findes der en sikker fremgangsmåde ?
åbn svar.
Avatar billede softspot Forsker
14. oktober 2007 - 14:15 #13
Ja, du kan bruge ADODB.Command i stedet, da du ikke skal håndtere felternes typer på samme måde som med traditionel strengsammensætning af SQL-sætninger. Command-objektet er også mere sikker mod SQL-injections (som din SQL er yderst sårbar overfor).

Et eksempel på brugen af Command (jeg antager at længden på dine strenge er max 50 tegn, det skal du naturligvis selv korrigere til det rigtige :-)):

set cmd = Server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = ditConnectionObjekt
cmd.CommandType = adCmdText
cmd.CommandText = "UPDATE Landinger SET [" & kstype & "] = ? WHERE ART = ? AND Havn = ?"
cmd.Parameters.Append cmd.CreateParameter("@kstype", adVarChar, adParamInput, 50, ksantal)
cmd.Parameters.Append cmd.CreateParameter("@art", adVarChar, adParamInput, 50, hart)
cmd.Parameters.Append cmd.CreateParameter("@havn", adVarChar, adParamInput, 50, havn)
call cmd.Execute()

Hvis du skal kunne bruge ADO-konstanterne som jeg har gjort her, skal du enten inkludere nedenstående META-tag i den ASP-fil hvor du bruger konstanterne, eller i toppen af din global.asa (så skal du ikke tænke på det andre steder i den applikation):

<!-- METADATA TYPE="typelib" uuid="00000205-0000-0010-8000-00AA006D2EA4"  -->
Avatar billede w13 Novice
14. oktober 2007 - 14:16 #14
En sikker fremgangsmåde for at undgå at bruge apostroffer forkert? Tror jeg ikke. Men serveren skal nok fortælle dig, når du glemmer nogle ;-)
Avatar billede softspot Forsker
14. oktober 2007 - 14:29 #15
Jeg vil anbefale dig at google lige på ADODB.Command, der findes mange kilder som omhandler brugen af command-objeket i forbindelse med interaktion med databaser. Evt. tage en tur omkring MSDN og kigge på referencemanualerne til ADO.

Det er en kendt sag at Command-objektet er mere sikkert end den meget brugte strengsammensætningsmetode og som du kan se fra mit eksempel ovenfor, er der ikke en eneste apostrof involveret i at opdatere dine data...

Stengsammensætning er en metode som (efter min mening) kun bør benyttes i statiske (dvs. der ikke ingår variable i SQL-sætningen) eller meget lukkede scenarier (altså hvor der ikke er noget direkte brugerinput involveret i din SQL-sætning).
Avatar billede ingeman Seniormester
14. oktober 2007 - 14:42 #16
Tak for tippet og hjælpen.
Avatar billede ingeman Seniormester
14. oktober 2007 - 14:43 #17
Tak for
Avatar billede softspot Forsker
14. oktober 2007 - 14:48 #18
Velbekomme og tak for point :)
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