webForumDet fria alternativet

Uppdatera flera poster samtidigt

ASPur ASP

7 svar · 646 visningar · startad av erika

Medlem sedan juli 200048 inlägg
Frågan#1

Håller på att göra en sida som skall uppdatera flera poster samtidigt.
Min första sida ser ut såhär som postar till nästa sida som skall lagra infon i min accessdatabas.

	<!-- #include virtual="/r/r/adovbs.inc" -->

<%	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=e:\home\togsdata\lindomegifse\lindomegif.mdb" 

	Set RecSet = Server.CreateObject("ADODB.Recordset")
   Visa = "SELECT * FROM spelare"
   RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>
   <form method="POST" action="spelare_redigera2.asp">
	<% Do While Not RecSet.eof %>
	<tr>
		<td width="25">&nbsp;</td>
		<td width="158">
		<input type="text" name="namn" size="20" value="<% =RecSet("spelar_namn") %>"></td>
		<td><input type="text" name="T2" size="4" value="<% =RecSet("spelar_amal") %>"></td>
		<td><input type="text" name="T3" size="4" value="<% =RecSet("spelar_aassist") %>"></td>
		<td><input type="text" name="T4" size="4" value="<% =RecSet("spelar_amatch") %>"></td>
		<td><input type="text" name="T5" size="4" value="<% =RecSet("spelar_tmal") %>"></td>
		<td><input type="text" name="T6" size="4" value="<% =RecSet("spelar_tassist") %>"></td>
		<td><input type="text" name="T7" size="4" value="<% =RecSet("spelar_tmatch") %>"></td>
		<td><input type="text" name="T8" size="4" value="<% =RecSet("spelar_t") %>"></td>
	</tr>
	<% Recset.Movenext 
	Loop
%>
</table>
<input type="submit" value="Uppdatera">

	</form>

Det där hämtar alltså alla spelare från databasen och gör ett formfält för varje del man kan uppdatera.
Är inte så hemma på asp så försöker mest redigera om ett script jag fått av en kompis.
Det fungerar fint när det gäller att uppdatera en post men nu när jag skall redigera flera poster blir det lite fel.
Den sidan som skall uppdatera posterna ser ut som följande:

<!-- #include virtual="/r/r/adovbs.inc" -->

<%	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=e:\home\togsdata\lindomegifse\lindomegif.mdb" 

	Set RecSet = Server.CreateObject("ADODB.Recordset")
   Uppdatera = "SELECT * FROM spelare"

   RecSet.Open Uppdatera, Connect, adOpenStatic, adLockOptimistic 

	RecSet("spelar_namn") = Request.Form("namn")
	RecSet.Update
	RecSet.Close
	Connect.Close %>

Hur gör jag så den lagrar alla poster i den koden? Tidigare har jag ju valt ut just rätt post genom id men nu blir det lite svårt för mig =)

Obs, bara tagit med spelar_namn i uppdateringen för att testa så det funkar sen kommer ju spelar_amal mm komma med.

Tacksam för hjälp!

Medlem sedan maj 20018 027 inlägg
#2

Är meningen att uppdatera alla poster så att alla spelare får samma namn? Det låter lite konstigt, tycker jag. Men är det detta du vill, kan du använda dig av en "UPDATE"-sats i sql:

Connect.Execute "update spelare set spelar_namn=" & Request.Form("namn")

Då uppdateras alla spelares namn till det nya namnet. Alla får alltså samma namn.

Medlem sedan juni 200032 969 inlägg
#3

UlfT skrev:

Är meningen att uppdatera alla poster så att alla spelare får samma namn? Det låter lite konstigt, tycker jag.

Meningen är nog snarare att varje post skall uppdateras individuellt, men samtidigt.

Jag förstår problemställningen, och lösningen är inte helt enkel. Så här hade jag gått tillväga:

* Sett till att namnen på alla fält är unika, och kan hjälpa till att bestämma till vilken spelare fälten / informationen hör. Inkludera ID i namnet alltså.

* Skapa ett hiddenfält i formuläret som innehåller id på alla spelare som skall uppdateras, dvs alla spelare i listan.

* På mottagarsidan, loopa igenom Request.form collection och gör en insert för varje unik spelare.

mvh

Medlem sedan juli 200048 inlägg
#4

Jo alltså alla ska inte ha samma namn, dolt formfält skall även spelar_id vara med så det är unikt för varje.

Kanske ska förklara lite syftet med scriptet så kan det förstås bättre.

Det är alltså 20 fotbollsspelare. Efter varje match/träning skall man via en sida kunna uppdatera alla spelare utan att behöva gå in på varje inviduellt.

Tex Kalle har gjort mål då drar man in en etta i hans kolumn för A_mal. Johan assisterade, en etta i kolumnen for a_assist osv.

Jag har gjort det tidigare men har tyvärr inte kvar koden men så svårt var det inte minns jag bara det att jag inte kommer på hur man gör. E ju bara att den skall lagra i alla efter respektive id.
Någon som har lösning till den andra kodsnutten där för i ettan är allt som det ska tror jag.

Medlem sedan juni 200032 969 inlägg
#5

erika skrev:

E ju bara att den skall lagra i alla efter respektive id.

Ja, och därför måste du märka alla fält med ID så du vet vilken information som tillhör vilken spelare.

Medlem sedan juli 200048 inlägg
#6

Jo men jag har ju spelar_id med också i en hidden form.
Går det inte att göra så andra filen accepterar och läser flera olika spelar_id?

Medlem sedan juni 200032 969 inlägg
#7

Jo, men hur ska asp-scriptet veta vilka fält som tillhör vilket spelar-ID?

Edit:

skickar du ett formulär där flera fält heter likadant, kommer det dessutom inte som olika fält, utan i en kommaseparerad lista. Jag litar inte på att det kommer i den ordning formuläret presenteras på skärmen.

Medlem sedan juli 200048 inlägg
#8

Okej får se om jag får tag i snubben som gjorde mitt tidigare script det var rätt simpelt men det försvann i en serverkrash, stort tack för hjälpen iaf!

131 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)