---
title: "Uppdatera stort fält i databasen"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/158353-uppdatera-stort-fält-i-databasen"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "snowcat"
published: "2007-03-18T23:27:36.000Z"
updated: "2007-03-19T12:30:23.000Z"
replies: 14
views: 449
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/158353-uppdatera-stort-fält-i-databasen"
---

# Uppdatera stort fält i databasen

## #1 — snowcat, 2007-03-18T23:27Z

Hej 
Jag har ett problem som jag undrar någon skulle vilja hjälpa mig att lösa. Jag har en accessdatabas som jag håller på och gör ett webformulär till så att jag kan uppdatera databasen över internet. Jag får upp alla fält som jag vill och de poster som innehåller något finns där. Dock har jag ett fält som kan innehålla tusentals tecken, (biografier) och dessa (fältet "historia") får jag bara upp typ den första raden i ett sådant fält där man kan ändra, sedan kommer resten av texten liksom utanför och man kan inte uppdatera det. Jag har försökt att lägga in "textarea" istället men det funkar inte alls. Kan man inte uppdatera stora fältmängder?
Så här ser koden ut som visar upp mina fält:

```
<%	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/sys/db1.mdb")

	Set RecSet = Server.CreateObject("ADODB.Recordset")
   Visa = "SELECT * FROM tabellen WHERE ID = " & Trim(Request.QueryString("adressID")) & " "
   RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>

	<form method="POST" action="andra3.asp">

	<tr><td><input type="hidden" name="AD" value="<% =Request.QueryString("adressID") %>"></td></tr>
	
	<tr><td>Förnamn:<br><input type="text" size="30" name="fnamn" value="<% =RecSet("fnamn") %>"></td></tr>
	<tr><td>Efternamn:<br><input type="text" size="30" name="enamn" value="<% =RecSet("enamn") %>"></td></tr>

	<tr><td>Historia:<br><input type="text" size="50" name="historia" value="<% =RecSet("historia") %>"></td></tr>
	
	<tr><td><input type="submit" value="Uppdatera"></td></tr>
	</form>
<% RecSet.Close
	Connect.Close %>
```

Skulle bli jättetacksam för svar om någon har något &#61514;

mvh Nina

Permalänk: https://www.webforum.nu/p/158353

## #2 — emission, 2007-03-18T23:44Z

1\. Stora textfält ska visas med textarea. input type=text är till för små korta "one-liners"
2\. Man ska alltid köra Server.HTMLEncode(värde) på det som läggs ut i formuläret

```
<input type="text" size="50" name="historia" value="<% =Server.HTMLEncode(RecSet("historia")) %>">
```

3\. Läs på om SQL Injection (sök på forumet)

Permalänk: https://www.webforum.nu/p/1949182

## #3 — snowcat, 2007-03-19T08:29Z

Precis som jag skrev så har jag även testat med textarea fast det funkar inte heller. Inga andra förslag?

Permalänk: https://www.webforum.nu/p/1949216

## #4 — @nders, 2007-03-19T08:34Z

Hur har du testat med textarea då, och på vilket sätt fungerar det inte?

Permalänk: https://www.webforum.nu/p/1949217

## #5 — Troxy, 2007-03-19T09:29Z

```
<tr><td>Historia:<br><textarea rows="25" cols="50" name="historia"><% =RecSet("historia") %></textarea></td></tr>
```

Permalänk: https://www.webforum.nu/p/1949231

## #6 — snowcat, 2007-03-19T09:42Z

Jag har fått till det med textarea nu, men har fått ett följdproblem.
Jag ändrade alla mina rader till 
\<tr\>\<td\>Historia:\<br\>\<textarea rows="20" cols="60" name="historia"\>\<% =Server.HTMLEncode(RecSet("historia")) %\>\</textarea\>\</td\>\</tr\>
och det funkar bra. 
Problemet är att jag har 21 kolumner och vissa av dessa är tomma i db:n - vilket de skall vara - men då får jag felet:
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'HTMLEncode'
/nina/historia/andra2.asp, line 26 

Plockar jag bort alla sånna rader när jag klickar på en person, (jag skriver biografier på historiska personer) så visas det upp rätt. Den verkar inte kunna klara av de tomma fälten i databasen?

Permalänk: https://www.webforum.nu/p/1949234

## #7 — @nders, 2007-03-19T09:46Z

Du kan inte skicka in NULL till strängfunktioner, så konkatenera med tom sträng:

```
<%=Server.HTMLEncode("" & RecSet("historia")) %>
```

 eller se till att inte köra funktionen om fältet är NULL

```
<% 
sHistoria = RecSet("historia") 
If not isnull(sHistoria) then Response.write Server.HTMLEncode(sHistoria) 
%>
```

Permalänk: https://www.webforum.nu/p/1949236

## #8 — snowcat, 2007-03-19T09:54Z

JÄTTETACK det funkade ju :-)
Gud vad glad jag blir !!!!

tack så hemskt mycket

/mvh Nina

Permalänk: https://www.webforum.nu/p/1949238

## #9 — snowcat, 2007-03-19T10:10Z

Hmm
jag har ju flera filer som kanske skall fixas till då, med det där serverHTMLencode? Skall jag ändra något på den här filen?

```
<%	
'*******************Databakoppling********************** 
	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db1.mdb")
	Set RecSet = Server.CreateObject("ADODB.Recordset")
   	Addera = "SELECT * FROM tabellen"
	RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
	RecSet.AddNew
'*******************Koppling slut********************** 
	
	RecSet("fnamn") = Request.Form("fnamn")
	RecSet("enamn") = Request.Form("enamn")
	RecSet("yrke") = Request.Form("yrke")
	RecSet("yrke1") = Request.Form("yrke1")
	RecSet("yrke2") = Request.Form("yrke2")
	RecSet("yrke3") = Request.Form("yrke3")
	RecSet("yrke4") = Request.Form("yrke4")
	RecSet("yrke5") = Request.Form("yrke5")
	RecSet("foto") = Request.Form("foto")
	RecSet("fodd") = Request.Form("fodd")
	RecSet("dod") = Request.Form("dod")
	RecSet("alder") = Request.Form("alder")
	RecSet("kort") = Request.Form("kort")
	RecSet("kon") = Request.Form("kon")
	RecSet("andrad") = Request.Form("andrad")
	RecSet("inlagd") = Request.Form("inlagd")
	RecSet("nation") = Request.Form("nation")
	RecSet("gravplats") = Request.Form("gravplats")
	RecSet("kallor") = Request.Form("kallor")
	RecSet("smeknamn") = Request.Form("smeknamn")
	RecSet("historia") = Request.Form("historia")

	RecSet.Update
	RecSet.Close
	Connect.Close %>

	<table align="center" border="1" width="520" class="vtext">
	<tr><td colspan="2">&nbsp;</td></tr>

	<tr><td colspan="2" class="rubrik">Följande har lagts till i databasen:</td></tr>
	<tr><td colspan="2">&nbsp;</td></tr>
	
	<tr><td width="10%">Förnamn:</td> <td><b><%=Request.Form("fnamn")%></b>	</td></tr>
	<tr><td>Efternamn: </td> <td><b><% =Request.Form("enamn") %></b>		</td></tr>
	<tr><td>Yrke:      </td> <td><b><% =Request.Form("yrke") %></b>			</td></tr>
	<tr><td>Yrke1:      </td> <td><b><% =Request.Form("yrke1") %></b>		</td></tr>
	<tr><td>Yrke2 (längre text):</td> <td><b><% =Request.Form("yrke2")%></b></td></tr>
	<tr><td>Yrke3:      </td> <td><b><% =Request.Form("yrke3") %></b>		</td></tr>
	<tr><td>Yrke4:      </td> <td><b><% =Request.Form("yrke4") %></b>		</td></tr>
	<tr><td>Yrke5:      </td> <td><b><% =Request.Form("yrke5") %></b>		</td></tr>
	<tr><td>Foto? (alt-text): </td> <td><b><% =Request.Form("foto") %></b>	</td></tr>
	<tr><td>Född årtal:      </td> <td><b><% =Request.Form("fodd") %></b>	</td></tr>
	<tr><td>Död årtal: </td> <td><b><% =Request.Form("dod") %></b>			</td></tr>
	<tr><td>Ålder:      </td> <td><b><% =Request.Form("alder") %></b>		</td></tr>
	<tr><td>Kort? (1 eller 2): </td> <td><b><% =Request.Form("kort") %></b>	</td></tr>
	<tr><td>Kön? (k=kvinna):</td> <td><b><% =Request.Form("kon") %></b>		</td></tr>
	<tr><td>Ändrad: 	</td> <td><b><% =Request.Form("andrad") %></b>		</td></tr>
	<tr><td>Inlagd:     </td> <td><b><% =Request.Form("inlagd") %></b>		</td></tr>
	<tr><td>Nation (sv):</td> <td><b><% =Request.Form("nation") %></b>		</td></tr>
	<tr><td>Gravplats:  </td> <td><b><% =Request.Form("gravplats") %></b>	</td></tr>
	<tr><td>Källor: 	</td> <td><b><% =Request.Form("kallor") %></b>		</td></tr>
	<tr><td>Smeknamn:   </td> <td><b><% =Request.Form("smeknamn") %></b>	</td></tr>
	<tr><td colspan="2"><% =Request.Form("historia") %> 			</td></tr>
```

Permalänk: https://www.webforum.nu/p/1949244

## #10 — spango, 2007-03-19T11:00Z

Du ska aldrig, aldrig, aldrig skriva ut något från Request.Form/QueryString utan att HTML-koda det. Så istället för *\<%=Request.Form("fnamn")%\>* får det bli *\<%=Server.HTMLEncode(Request.Form("fnamn"))%\>*

Permalänk: https://www.webforum.nu/p/1949259

## #11 — snowcat, 2007-03-19T11:21Z

Men varför? Kan någon berätta varför man inte får göra så?

Permalänk: https://www.webforum.nu/p/1949263

## #12 — spango, 2007-03-19T11:30Z

Därför att annars kan vem som helst lägga in HTML-kod (och därmed script) som kan ställa till med hyss i användarnas webbläsare. Prova att skriva in t.ex. följande kod i någon av textrutorna  och tryck på submit så förstår du kanske varför:

```
<script>document.body.innerHTML = '\u003cmarquee style="text-decoration:blink;"\u003eDet bästa med spango är att han inte bara är så smart, utan också samtidigt så fasligt vacker.\u003c/marquee\u003e';</script>
```

Är man lite ondare kan man sno cookies, inloggningsinfo, etc.

Läs mer på <http://en.wikipedia.org/wiki/Xss>

Permalänk: https://www.webforum.nu/p/1949267

## #13 — snowcat, 2007-03-19T11:46Z

ok då förstår jag
men det här formulären är ju inte något som någon annan skall ha än jag. Det är när jag skall ändra något i databasen bara, det är ju inga andra som gör det....?

men jag förstår vad du menar och tackar för hjälpen   :e

Permalänk: https://www.webforum.nu/p/1949273

## #14 — spango, 2007-03-19T12:28Z

Man kan ställa till oreda genom misstag också, inte bara genom illvilja :) och det är alltid fel att skaffa sig bra vanor. Använder man alltid HTMLEncode på allt är risken mindre att man glömmer det på ett Dåligt Ställe.

Permalänk: https://www.webforum.nu/p/1949290

## #15 — snowcat, 2007-03-19T12:30Z

okidoki   :) 
då skall jag lyda dig!

Permalänk: https://www.webforum.nu/p/1949291

---

Tråden på webben: https://www.webforum.nu/amne/asp/158353-uppdatera-stort-fält-i-databasen
