webForumDet fria alternativet

Problem med en split tror jag...

1 svar · 266 visningar · startad av l-boy

l-boyMedlem sedan juli 2003221 inlägg
#1

Har en tabell som innehåller tre fält;gameID, playerID och minutes. Här sparas hur många minuter en spelare spelar i varje match.

På adminsidan som finns finns dels en checkbox för varje spelare om han spelat eller ej samt ett fält för att fylla i minutrarna. Checkboxarna har funkat fint men idag tänkte jag lägga till minutrarna. Kåden finns nedanför. Allt funkar så länge checkboxarna är ikryssade. Är dom inte det dock så förskjuts
minutrarna ... varför?

Här lagras all data. Funkar fint.


<tr height="17" bgcolor="<%=set_bg(pattern)%>"><td><%=RecSet("Name")%></td><td><input type="checkbox" name="ID" <% = CheckCheckBox(Cstr("Select * From playedgames Where playerID="&RecSet("ID")&" And gameID="&Session("a_GameID")&"")) %> value="<%=RecSet("ID")%>"></td><td><input type="number" size="2" maxlength="2" name="Mins" value="<% Response.Write PrintValue3("Select * From playedgames Where playerID="&RecSet("ID")&" and gameID="&Session("a_GameID")&"","Minutes") %>"></td></tr>

Här sparas det i databasen. Det är här det strular. Jag vill att den skall gå igenom ALLA IDs. Men den hoppar över alla som inte är checkade...


Connect.Execute("Delete * From playedgames Where gameID="&Session("a_GameID")&"")

ids = Request.Form("ID")
mins= Request.Form("mins")
tempids = Split(ids,",")
tempmins = Split(mins,",")
	
For i=0 To UBound(tempids)
Connect.Execute ("Insert Into playedgames ([gameID], [playerID], [Minutes]) values("&Session("a_GameID")&","&tempids(i)&","&tempmins(i)&")")  		
next
emissionMedlem sedan dec. 19996 721 inlägg
#2

För första kodbiten skulle jag vilja föreslå att du redan i databasutsökningen ser till att få med värdena som du nu hämtar med CheckCheckBox och PrintValue3. Dessa funktioner är klart överflödiga.

Anledningen till att det förskjuts är att du bara får med de ikryssade checkboxarna i request, medan du får med alla min-rutorna. Arrayen tempids innehåller mao färre element än tempmins.

En tänkar lösning är :

<tr height="17" bgcolor="<%=set_bg(pattern)%>">
<td><%=RecSet("Name")%></td>
<td><input type="checkbox" name="played<%=RecSet("ID")%>" <% if RecSet("Played")  then%>checked<%end if%> value="<%=RecSet("ID")%>">
<input type="hidden" name="ID" value="<%=RecSet("ID")%>"></td>
<td><input type="number" size="2" maxlength="2" name="Min<%=RecSet("ID")%>" value="<%=server.htmlencode(""&RecSet("Value3"))%>"></td></tr>

och

Connect.Execute("Delete * From playedgames Where gameID="&Session("a_GameID")&"")

	
For each ID in request("ID")
Connect.Execute "Insert Into playedgames ([gameID], [playerID], [Minutes]) values("&Session("a_GameID")&"," & ID & "," & replace(request.form("Min" & ID),"'","''") &")"		
next

Som du ser ligger själva ID:t i ett hiddenfält, och detta ID läggs in i namnet på både textrutan och checkboxen. Checkboxen saknar dock funktion i detta exempel, men värdet kan lätt plockas ut med request.form("Played" & ID)

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