Jag har ett fält i min tabell som heter "betalda" och det är booleanskt, ja/nej.
Jag läser in alla rader med detta (kollar av fältet betalda och kryssar i en av två radio-knappar):
sql = "select * from hours where project_id=" & request.querystring("id") & " ORDER BY datum DESC"
rs.open sql,conn,3,1
do while not rs.eof
...
<input type="radio" name="<%response.write rs("ID_hours")%>" value="ja" <%If rs("betalda") = true then
response.write "checked"
End if%>>
<input type="radio" name="<%response.write rs("ID_hours")%>" value="nej" <%If rs("betalda") = false then
response.write "checked"
End if%>>
...
<%
rs.moveNext
loop
rs.close
%>
Alltså, beroende på vad project_id är sorterar den ut olika fält och skriver ut (tillsammans med lite annat som jag inte skrivit) radio-knapparna och bockar i dom rätt.
Detta funkar bra.
Nu till kruxet. :)
Jag vill alltså kunna göra ändringar, kryssa i och ur radio-knappar och sedan uppdatera min tabell och skriva in de nya värdena i de fälten som jag ändrat.
(De andra värdena, såsom datum osv ska vara samma som innan, endast fältet "betalda" ska ändras.)
Vet alltså inte riktigt hur jag ska skriva i betalda_timmar_utfor.asp för att skriva om ja/nej-fältet betalda beroende på hur respektive radio-knapp är markerad.
Vet att jag ska använda update, men inte hur...har bara gjort edit-funktion för en rad förut, inte för många som detta då blir.
Hjälphjälp :)
Måste du ha det så? Dvs. du plockar ut namnet ur databasen. Om du ändrar det till name="id_hours" istället?
Jag tror du vill ha namnet på tabellen här?
Om det är så skulle du kunna köra nedanstående:
(ev. ska du skicka med "project_id" också?)
For i=1 to Request.Form("id_hours").Count
id_hours=CStr(Request.Form("id_hours")(i))
if id_hours = "ja" then
id_hours = true
else
id_hours = false
end if
strSQL="UPDATE hours SET" & 'din sqlfråga här
Database.Execute(strSQL)
next
Database.Close
Set Database=nothing
Jo, det måste jag nog göra, annars vet ju inte asp-sidan vilka radioknappar som ska vara ikryssade och inte.
Hmhm...ID_hours är primärnyckeln/räknaren...project_id är lika på alla som visas.
Alltså visas x antal rader som har samma project_id...och deras primärnyckel är ID_hours.
Och kolumnen betalda är ja/nej (beroende på detta kryssas en av radioknapparna i i förväg), alltså måste jag väl ge varje radioknapp ett individuellt namn, så man vet vilken som är vilken ?
Så den vet vilken ID_hours-rad som ska ändras när jag byter radioknapp på någon av dom...eller har jag fattat det fel ?
Jag blir yr. :)
Namnet på radioknapparna blir då ex. name="betalda"
Och koden i betalda_timmar_utfor.asp blir:
For i=1 to Request.Form("id_hours").Count
betalda = CStr(Request.Form("betalda")(i))
id_hours=CStr(Request.Form("id_hours")(i))
if betalda = "ja" then
betalda = true
else
betalda = false
end if
strSQL="UPDATE hours SET betalda='"&betalda&"' WHERE id_hours = "&id_hours&";"
Database.Execute(strSQL)
next
Database.Close
Set Database=nothing
Då går den igenom rad för rad där id_hours stämmer överens och uppdaterar. Hoppas det skall funka i alla fall.
Tack för svaret ! :)
Tyvärr så fick jag det inte att funka dock...fick detta meddelande:
- - -
Request object error 'ASP 0105 : 80004005'
Index out of range
betalda_timmar_utfor.asp, line 23
An array index is out of range.
- - -
Funderade på en grej du skrev förresten...det här:
- Namnet på radioknapparna blir då ex. name="betalda"
Radioknapparn får väl namnet ID_hours...alltså primärnyckeln, vilken rad det är i tabellen...
Det använder jag iaf för att få rätt radioknapp ikryssad på formulär-sidan, när den känner av databasen:
<input type="radio" name="<%response.write rs("ID_hours")%>" value="ja" <%If rs("betalda") = true then
response.write "checked"
End if%>>
Och en likadan för nej oxo, som jag skrev tidigare.
Hmhm, det var krångligt det här :)
Vad jag har förstått så är det fältet "betalda" i databasen som skall uppdateras med true eller false. DU använder rs("betalda") för att få reda på om den ska vara "checked" eller inte. Om du använder name=rs("ID_hours") kommer du få:
name=1
name=2
name=20
osv...
Du måste nog skicka med ID_hours som en egen input hidden
Namnet på radioknappen blir då densamma som "value" för input hidden-tagen
Koden i betalda_timmar_utfor.asp blir:
For i=1 to Request.Form("id_hours").Count
id_hours=CStr(Request.Form("id_hours")(i))
betalda = CStr(Request.Form(id_hours))
if betalda = "ja" then
betalda = true
else
betalda = false
end if
strSQL="UPDATE hours SET betalda='"&betalda&"' WHERE id_hours = "&id_hours&";"
conn.Execute(strSQL)
next
conn.Close
Set conn=nothing
Vet inte om det är den smidigaste lösningen som går att uppbringa men den funkar i alla fall.