Avatar billede reino Nybegynder
07. april 2005 - 08:32 Der er 12 kommentarer og
1 løsning

request.form values samt names

Hejsa

har følgende kode som eksekveres efter en post af form:

for i = 1 to Request.form.count -1
response.write Request.form(i) & "<br>"
next
else

Denne tager jo alle værdierne fra formen, altså values

Men hvad hvis jeg også ønske name på den pågældende værdis name ?

Ex. på linje fra form:

<INPUT TYPE="text" NAME="rabatgruppe11" size="2" value="<%= RS("rabatgruppe11")%>

Jeg skal bruge det til at databaseopdateringen lidt nemmere at arbejde med så man ikke hver gang manuelt skal sidde og lave sql updaten manuelt :) , nok bare mig der har stirret mig blind på det :)
Avatar billede fennec Nybegynder
07. april 2005 - 08:45 #1
Du kan bruge Request.Form(). Noget i denne stil:

tmpArr = split(Request.Form(),"&")
for each tmp in tmpArr
  Response.write tmp & "<br>"
next
Avatar billede steen_hansen Forsker
07. april 2005 - 09:00 #2
Kigger med
Avatar billede fennec Nybegynder
07. april 2005 - 09:13 #3
Du skal foresten også have splittet næste niveau:

tmpArr = split(Request.Form(),"&")
for each tmp in tmpArr
  tmpArr2 = split(tmp,"=")
  Response.write tmpArr2(0) &"='"& tmpArr2(1) & "'<br>"
next

Det næste problem er, at du ikke ved hvad der er text/dato/tal, så du ved ikke om der skal være ', # eller intet omkring værdien. Du burde dog kunne finde ud af det med forskellige test (isnumeric(), isDate())
Avatar billede reino Nybegynder
07. april 2005 - 09:52 #4
Oki, takker, har siddet og rodet lidt med det.

tmpArr = split(Request.Form(),"&")
for each tmp in tmpArr
  tmpArr2 = split(tmp,"=")
  strSQLQuery = "update rabat set " & tmpArr2(0) & " = '" & tmpArr2(1) & "'"
  response.write strSQLQuery
  'Response.write tmpArr2(0) &"='"& tmpArr2(1) & "'<br><br>"
next
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSQLQuery, conn, 3, 3
conn.close
set conn = Nothing

Måske jeg lige skulle lave sql updaten lidt mere hensigtsmæssig. Nogen ide til dette ?, har snørklet lidt med det også forsøgt med rs.update men får en ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.
Avatar billede fennec Nybegynder
07. april 2005 - 10:03 #5
Noget i denne stil:

tmpArr = split(Request.Form(),"&")
sql= ""
for each tmp in tmpArr
  tmpArr2 = split(tmp,"=")
  if sql = "" then
    sql = tmpArr2(0) &"='"& tmpArr2(1) & "'"
  else
    sql = sql & "," & tmpArr2(0) &"='"& tmpArr2(1) & "'"
  end if
next
sql = "update rabat set "& sql &" where id=123"

Men der mangles en betingelse til where delen af sql-sætningen.
Avatar billede reino Nybegynder
07. april 2005 - 10:27 #6
Kanon, tak, nu virker det, lavede det lidt om, lyder som følger:

Set rs = Server.CreateObject("ADODB.Recordset")
opdater = "SELECT * FROM rabat WHERE ID = 1"
RS.Open opdater, Conn, 3, 3
tmpArr = split(Request.Form(),"&")
for each tmp in tmpArr
  tmpArr2 = split(tmp,"=")
    RS (tmpArr2(0)) = tmpArr2(1)
    RS.Update
next
RS.Close
Conn.Close

Super tak for hjælpen, smider du et svar ?
Avatar billede fennec Nybegynder
07. april 2005 - 10:32 #7
.o) <-- One Eyed Jack
Avatar billede reino Nybegynder
08. april 2005 - 06:38 #8
:)
Avatar billede reino Nybegynder
08. april 2005 - 07:12 #9
Woops, har lige en ting jeg er stødt på , har også lavet den som en add:

Set rs = Server.CreateObject("ADODB.Recordset")
strSQL = "Select * From cv"
RS.Open strSQL, Conn, 3, 3
RS.Addnew
tmpArr = split(Request.Form(),"&")
for each tmp in tmpArr
  tmpArr2 = split(tmp,"=")
  'Response.write tmpArr2(0) &"='"& tmpArr2(1) & "'<br>"
 
    RS (tmpArr2(0)) = tmpArr2(1)
    RS.update
next
RS.Close
Conn.Close%>

Hvordan kan det være at mellemrum bliver erstattet af et plus ?
Avatar billede fennec Nybegynder
08. april 2005 - 08:06 #10
Virker mærkelig. Jeg ved at med get/querystring() metoden udskifter den mellemrum med +, da mellemrum ikke er gyldig i en url, men det bliver automatisk skiftet tilbage igen når man henter med querystring(). Har aldrig hørt om at den gør det ved post/form() metoden....
Avatar billede reino Nybegynder
13. april 2005 - 06:49 #11
Ja, det er lidt sort. Har bemærket at æ ø og å bliver konverteret til f.eks: %F8. Kan man gøre noget ved dette, kan godt smide et nyt spørgsmål såfremt :)
Avatar billede steen_hansen Forsker
13. april 2005 - 07:26 #12
Mellemrum skal erstattes af et plus (+)

<%
If .... Then

    Response.Redirect("/error.asp?msg=Du+mangler+at+indtaste+brugernavn+eller+adgangskode.")

End If
%>

<%=Request.QueryString("msg")%>
Avatar billede reino Nybegynder
13. april 2005 - 07:38 #13
hej Steen

Jeps , tak.  Problemet er blot at ved indtastning af mellemrum i formularen bliver disse indsat som + i databasen, dette gælder også ved æ ø og å. Disse bliver dog konveretet til nogle andre tegn, som om den ikke forstå dansk tegnsæt, har prøvet at benytte:

<% session.CodePage = 1252 %>
<meta http-equiv="Content-Type"content="text/html; charset=iso-8859-1">
<meta name="language" content="dan">

I htmlkoden men virker heller ikke...
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