webForumDet fria alternativet

Spara i databas

ASP

8 svar · 744 visningar · startad av Asa

Medlem sedan dec. 20011 860 inlägg
Frågan#1

Jag har en databas där jag ska spara värden ifrån ett formulär. Vissa formulärfält har samma namn och kommer sparas som flera svar till ett fält i databasen och dessa separeras med , i databasen.

Kan man ändra detta så att det separerar med ; istället? Man ska även kunna skriva tecknet , i dessa fälten som ett textstycke. Om de tinte går har någon tips på hur man löser detta på annat sätt?

Kanske jag skriver i fel forum men isåfall får ni flytta tråden.

Medlem sedan okt. 2007446 inlägg
#2

hmm
om man postar ett form med säg 10 textboxar som alla heter txtHoppla så kommer väl
request.form("hoppla") ge en array/kommaseparerad sträng
földaktligen borde det gå att loopa igenom den
och sen bygga om den till en semikolonseparerad sträng som man sen sparar

	Dim result : result=""
	Dim formField:formField=""
	for i=1 to Request.Form("Test").count
		formField=Request.Form("Test").Item(i)
		If len(formField)>0 Then
			result=result&Request.Form("Test").Item(i)&";"
		End If
	next
	Response.Write(result)

annars kan du väl döpa dina fält till svar1-svar10
och sen bygga ihop dem i en loop

Alternativet är väl att spara varje "svar" som en egen post i en egen tabell, känns mer databasmässigt rätt på nåt sätt

Medlem sedan sep. 2004828 inlägg
#3

Om du lagrar kommaseparerade värden i ett fält i databasen så gör du generellt något fel.

Som rhdf säger så är det korrekta nästan alltid att spara varje "svar" som en egen post.

Medlem sedan okt. 2007446 inlägg
#4

Eftersom stefan var snabb där så ;)
koden jag editerade in går ju även att modifiera så att man kan spara varje svar i en egen post i en egen tabell

Medlem sedan juni 20006 022 inlägg
#5

Om du har en kodsnutt som lägger in , mellan varje svar så borde det ju inte vara några konstigheter att ändra detta till ett ; istället. Borde ju bara vara att leta upp , i koden och ändra det.

Visa lite kod så blir det lättare att hjälpa till.

Medlem sedan okt. 2007446 inlägg
#6

@quid:
jag misstänker att hon har tex 5 textrutor med samma namn med request.form(namnet) så får man automagiskt ett komma mellan fälten, därav min kod som gör mer eller mindre det du sa. Dvs går igenom varje fält i reguest.form(namnet) och hanterar skiljetecknet själv )+ en koll så att tomma fält inte tas med)

Medlem sedan juni 20019 519 inlägg
#7
for each item in request.form("text")
	Response.Write item & "<br/>"
Next

Ge dig alla input boxar med namnet text, skriver ut innehållet och gör en radbrytning, det är bara att jobba med den.

Medlem sedan dec. 20011 860 inlägg
#8

Tackar för alla svar. Ja, jag har flera inputrutor med samma namn så det var därför jag ville ha hjälp med detta.
Och jag testar olika sätt att spara detta smidigast till databasen. Får se hur jag gör det bara..

Medlem sedan okt. 2007446 inlägg
#9

Smidigaste sättet att spara TILL databasen är inte alltid samma sak som att man lagrar datan på ett smidigt sätt;)

så för att lagra data på ett databasmässigt korrekt sätt så får man oftast stå ut med att ha flera inserts (såvida man inte kan lösa det snyggt med en stored procedure)

258 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)