webForumDet fria alternativet

Uppdatering av flera poster samtidigt

ASP

13 svar · 206 visningar · startad av emil

Medlem sedan apr. 2000106 inlägg
Frågan#1

Har byggt upp ett statistiksystem för vårt fotbollslag men både jag och han som uppdaterar det efter varje match tycker det är lite krångligt. Som det är nu får man ändra varje spelare för sig via ett formulär, sen öppna nästa spelare och ändra han osv...

Min databas ser ut såhär något förenklad

ID NAMN MÅL MATCHER GULA KORT
1 Emil 10 1 1
2 Kalle 22 2 2

Går det att göra så en sida laddas i stil med den ovan fast allting ligger i liksom formulärrutor? så det bara är att ändra totalet mål för emil, sen tabbar man sig till kalle osv?
och sen trycker man typ uppdatera så uppdateras alla på sama gång?

Kan ingenting om det här och har letat som en tok både idag och igår på nätet efter tutorials, exempel samt läst igenom 2 böcker och inte hittat nåt så jag hoppas nån kanske orkar hjälpa med lite kod om någon kan, vore väldigt uppskattat av såväl mig som min fotbollsförening!

Mvh EMil

Medlem sedan dec. 200012 464 inlägg
#2

På sidan som lägger fält för uppdatering kan du göra så här att du loopar ut
alla värden och ger fälten samma namn.
(Du får nog ordna till layouten lite och anpassa tabellnamn.)

'öppna databas
set connect = server.createobject("adodb.connection")
connect.open "dsn"
sql = "select * from spelare"
set recset = connect.execute(sql)
Do Until RecSet.EOF
%>
<B><%=RecSet("fraga")%></B><BR>
<input type="text" SIZE="30" MAXLENGTH="30" VALUE="<%=RecSet("namn")%>" name="namn" CLASS="input"><P>
<input type="text" SIZE="30" MAXLENGTH="30" VALUE="<%=RecSet("mal")%>" name="mal" CLASS="input"><P>
<input type="text" SIZE="30" MAXLENGTH="30" VALUE="<%=RecSet("matcher")%>" name="matcher" CLASS="input"><P>
<input type="text" SIZE="30" MAXLENGTH="30" VALUE="<%=RecSet("gulakort")%>" name="gulakort" CLASS="input"><P>
<input type="hidden" name="id" value="<% =recset("id")%>">
<%
RecSet.MoveNext
Loop

RecSet.Close
connect.close
%>
<P>

--------------------------------------------------------------------------------

På sidan som tar emot formuläret så kan du göra så här för att uppdatera alla
spelare


set connect = server.createobject("adodb.connection")
connect.open "dsn"
for i = 1 to request.form("id").count
sql = "update spelare set spelare = '" & replace(request.form("namn")(i),"'","''") & "'" & _
 ", mal = " & request.form("mal")(i) & _
 ", matcher = " & request.form("matcher")(i) & _
 ", gulakort = " & request.form("gulakort")(i) & _
 " where id = " & request.form("id")(i)

connect.execute sql,rows,128

next
connect.close

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 19 okt 2001]

[Redigerat av LarsG den 22 okt 2001]

Medlem sedan apr. 2000106 inlägg
#3

stort tack för hjälpen, har dock problem med nedanstående:
& " where id = " & request.form("id")(i)

denna raden ger syntax error...
någon som har nåt tips?

Medlem sedan dec. 200012 464 inlägg
#4

Jo, det blev lite fel.

sql = "update spelare set spelare = '" & replace(request.form("namn")(i),"'","''") & "'" & _
 ", mal = " & request.form("mal")(i) & _
 ", matcher = " & request.form("matcher")(i) & _
 ", gulakort = " & request.form("gulakort")(i) & _
 " where id = " & request.form("id")(i)

------------------
essentitia preter non sans multiplicandum

Medlem sedan apr. 2000106 inlägg
#5

Jag vet inte om det är jag som gör fel men har letat i mina asp böcker och sånt och får inte löst det ;(

An array index is out of range får jag som felmeddelande nu av denna raden:

sql = "update statistik set statistik = '" & replace(request.form("namn")(i),"'","''") & "'" & _

Sen en fråga till om du orkar lars, skitsjysst att du hjälper mig förresten.
<%
=RecSet("fraga")
%>

Jag får felmeddelande om jag kör med den och var kommer "fraga" in i bilden?

Mvh Emil

Medlem sedan dec. 200012 464 inlägg
#6

Det där med recset("fråga") kan du ta bort helt och hållet. (Jag klippte in lite kod från ett annat inlägg.)

Det andra problemet är lite värre.

Kan du lägga in lite traceutskrifter i koden?


response.write "Antal id:" & request.form("id").count & "<br>"
response.write "Antal namn:" & request.form("namn").count & "<br>"
response.write "Antal mal:" & request.form("mal").count & "<br>"
response.write "Antal matcher:" & request.form("matcher").count & "<br>"
response.write "Antal gulakort:" & request.form("gulakort").count & "<br>"

for i = 1 to request.form("id").count
response.write "Index :" & i & "<br>"
sql = "update spelare set spelare = '" & replace(request.form("namn")(i),"'","''") & "'" & _
", mal = " & request.form("mal")(i) & _
", matcher = " & request.form("matcher")(i) & _
", gulakort = " & request.form("gulakort")(i) & _
" where id = " & request.form("id")(i)

connect.execute sql,rows,128

next

------------------
essentitia preter non sans multiplicandum

Medlem sedan apr. 2000106 inlägg
#7

Får exakt samma fel på samma rad.

Tar jag bort den koden och bara har med response.write blir det

Antal id:23
Antal namn:23
Antal amal:0

Medlem sedan dec. 200012 464 inlägg
#8

Då verkar det mer bero på den kod där du lägger ut inmatningsformuläret. Hur ser den ut?

Det verkar ha blivit något problem med namngivningen i och med att det inte finns något fält som heter mal.

------------------
essentitia preter non sans multiplicandum

Medlem sedan apr. 2000106 inlägg
#9

fick löst det felet nu, verkar nog lösa sig snart men en ny liten skitgrej nu:

connect.execute sql,rows,128

det blir detta felmeddelandet: generates to few parameters, expected: 1

Medlem sedan dec. 200012 464 inlägg
#10

Då brukar det vara något fel på sql-satsen, t.ex. att det är något kolumnnamn som inte stämmer med tabelledefinitionen.

Kan du lägga till en utskrift av sql-strängen?

response.write sql
connect.execute sql,rows,128

------------------
essentitia preter non sans multiplicandum

Medlem sedan apr. 2000106 inlägg
#11

Om jag ignorerar felraden ('connect.execute sql,rows,128)

så skriver den ut följande:

Index :1
update statistik set statistik = 'Emil Jansson', amal = 32 where id = 1Index :2

update statistik set statistik = 'Tomislav Markovic', amal = 23 where id = 2Index :3

osv. för alla i databasen...

( har kortat ner min datbas just under detta testet till att enbart innehålla amal ( alagsmål ) samt spelarens namn, tabellen heter statistik.
Jag har givetvis bytt ut detta överallt i båda asp sidorna.

Medlem sedan apr. 2000106 inlägg
#12

klipper väl in all kod för sida 1&2 också kanske kan hjälpa är nog bara nåt skitfel som jag inte sett fast jag bläddrat igenom mina böcker som en iller:

1.asp
<%
'öppna databas
set connect = server.createobject("adodb.connection")
connect.open "dsn"
sql = "select * from statistik"
set recset = connect.execute(sql)
Do Until RecSet.EOF
%>
<B></B><form method="POST" action="2.asp">
<br>
<input type="text" SIZE="18" MAXLENGTH="30" VALUE="<%=RecSet("namn")%>" name="namn" CLASS="input">
<input type="text" SIZE="2" MAXLENGTH="2" VALUE="<%=RecSet("amal")%>" name="amal" CLASS="input">
<input type="hidden" name="id" value="<% =recset("id")%>">
<%
RecSet.MoveNext
Loop
RecSet.Close
connect.close
%><br>
<input type="submit" value="Skicka" name="B1"><input type="reset" value="Återställ" name="B2"></p>
</form>

2.asp
<%

set connect = server.createobject("adodb.connection")
connect.open "dsn"

for i = 1 to request.form("id").count
response.write "Index :" & i & "<br>"
sql = "update statistik set statistik = '" & replace(request.form("namn")(i),"'","''") & "'" & _
", amal = " & request.form("amal")(i) & _
" where id = " & request.form("id")(i)

connect.execute sql,rows,128

next
connect.close

%>

Medlem sedan dec. 200012 464 inlägg
#13

Stämmer det att kolumnen som innehåller spelarens namn heter statistik?

update statistik set statistik = 'Emil Jansson', amal = 32 where id = 1

Sql-satsen ser riktig ut annars.

------------------
essentitia preter non sans multiplicandum

Medlem sedan apr. 2000106 inlägg
#14

Fasen där var det ju :-D

Har hängt med sen ditt inlägg nummer 2 inte tänkt på att kolla det, men man lär väl sig på sina misstag.

Vill rikta ett enormt stort tack till dig Lars både från mig och min fotbollsförening som kommer att ha stor glädje av statistiksystemet!
Såna som dig som gör mig glad =)

Tack igen och ha det kanon nu ska jag fortsätta bygga ut dbn =)

Mvh Emil Jansson / Lindome GIF

261 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)