Frågan 10 sep. 2006 18:04 #1 Tjena
Har gjort en grej där x antal fält skrivs ut, så att man ska kunna redigera dessa.
När man postar formuläret så sparas dessa genom en SQL UPDATE som körs i en For-Loop.
Såhär ser koden ut som skriver ut fälten:
cId = Trim(Request.Querystring("cId"))
sSql = "SELECT cId, cName, cStart, pId, compId, pName, pDate, pTime " &_
"FROM tbl_compAnm_Comp tC INNER JOIN tbl_compAnm_Phases tP " &_
"ON tC.cId = tP.compId " &_
"WHERE tC.cId = " & cId & " " &_
"ORDER BY cStart ASC, pDate ASC, pTime ASC"
If isNumeric(cId) Then
openDB("def")
Set rs = oConn.Execute(sSql)
If Not rs.EOF Then
i = 1
Response.Write( "<form action=""?do=updatePhase&cId=" & cId & """ method=""post"">" & VbCrLf &_
"<table cellpadding=""0"" cellspacing=""0"" style=""background-color: #FFF;"">" & VbCrLf &_
"<tr>" & VbCrLf &_
"<td colspan=""3"" class=""table_top padall"">" & rs("cName") & " med start " & rs("cStart") & "</td>" & VbCrLf &_
"</tr>" & VbCrLf &_
"<tr>" & VbCrLf &_
"<td class=""bTxt"" style=""font-weight: bold; width: 250px; padding-left: 3px;"">Passnamn:</td>" & VbCrLf &_
"<td class=""bTxt"" style=""font-weight: bold; width: 150px; padding-left: 5px;"">Datum:</td>" & VbCrLf &_
"<td class=""bTxt"" style=""font-weight: bold; width: 150px; padding-left: 5px;"">Tid:</td>" & VbCrLf &_
"</tr>" & VbCrLf)
While Not rs.EOF
Response.Write( "<tr>" & VbCrLf &_
"<td colspan=""3""><input type=""hidden"" name=""postId"" value=""" & i & """ /></td>" & VbCrLf &_
"</tr>" & VbCrLf &_
"<tr>" & VbCrLf &_
"<td class=""bTxt"" style=""padding-left: 3px; padding-top: 3px;""><input type=""text"" name=""pName_" & i & """ value=""" & rs("pName") & """ style=""width: 250px;"" /></td>" & VbCrLf &_
"<td class=""bTxt"" style=""padding-left: 5px; padding-top: 3px;""><input type=""text"" name=""pDate_" & i & """ value=""" & rs("pDate") & """ style=""width: 150px;"" /></td>" & VbCrLf &_
"<td class=""bTxt"" style=""padding-left: 5px; padding-top: 3px;""><input type=""text"" name=""pTime_" & i & """ value=""" & rs("pTime") & """ style=""width: 150px;"" /></td>" & VbCrLf &_
"</tr>" & VbCrLf)
i = i + 1
rs.MoveNext
Wend
Response.Write( "<tr>" & VbCrLf &_
"<td colspan=""3"" style=""text-align: right; padding: 10px 0px 3px 3px;""><input type=""submit"" value=""Uppdatera"" class=""btn"" /></td>" & VbCrLf &_
"</tr>" & VbCrLf &_
"</table>" & VbCrLf &_
"</form>" & VbCrLf)
End If
closeDB()
End If
Resultatet av ovanstående kan se ut såhär:
<form action="?do=updatePhase&cId=11" method="post">
<table cellpadding="0" cellspacing="0" style="background-color: #FFF;">
<tr>
<td colspan="3" class="table_top padall">Stockholm Summer Games med start 2006-06-28</td>
</tr>
<tr>
<td class="bTxt" style="font-weight: bold; width: 250px; padding-left: 3px;">Passnamn:</td>
<td class="bTxt" style="font-weight: bold; width: 150px; padding-left: 5px;">Datum:</td>
<td class="bTxt" style="font-weight: bold; width: 150px; padding-left: 5px;">Tid:</td>
</tr>
<tr>
<td colspan="3"><input type="hidden" name="postId" value="3" /></td>
</tr>
<tr>
<td class="bTxt" style="padding-left: 3px; padding-top: 3px;"><input type="text" name="pName_3" value="Pass 1" style="width: 250px;" /></td>
<td class="bTxt" style="padding-left: 5px; padding-top: 3px;"><input type="text" name="pDate_3" value="Lör den 1 juli" style="width: 150px;" /></td>
<td class="bTxt" style="padding-left: 5px; padding-top: 3px;"><input type="text" name="pTime_3" value="Insim 08.00" style="width: 150px;" /></td>
</tr>
<tr>
<td colspan="3"><input type="hidden" name="postId" value="4" /></td>
</tr>
<tr>
<td class="bTxt" style="padding-left: 3px; padding-top: 3px;"><input type="text" name="pName_4" value="Pass 2" style="width: 250px;" /></td>
<td class="bTxt" style="padding-left: 5px; padding-top: 3px;"><input type="text" name="pDate_4" value="Lör den 1 juli" style="width: 150px;" /></td>
<td class="bTxt" style="padding-left: 5px; padding-top: 3px;"><input type="text" name="pTime_4" value="Insim 14.00" style="width: 150px;" /></td>
</tr>
<tr>
<td colspan="3" style="text-align: right; padding: 10px 0px 3px 3px;"><input type="submit" value="Uppdatera" class="btn" /></td>
</tr>
</table>
</form>
När jag sedan postar formuläret kör jag följande:
openDB("def")
cId = Request.Querystring("cId")
For Each postId In Request.Form("postId")
pName = Request.Form("pName_" & postId)
pDate = Request.Form("pDate_" & postId)
pTime = Request.Form("pTime_" & postId)
sSql = "UPDATE tbl_compAnm_Phases SET " &_
"pName = '" & pName & "', " &_
"pDate = '" & pDate & "', " &_
"pTime = '" & pTime & "' " &_
"WHERE pId = " & postId
' Response.Write(sSql & "<br />")
oConn.Execute(sSql)
Next
closeDB()
Response.reDirect("competition_notification.asp?do=addNew&step=3&cId=" & cId)
Har testat att skriva ut sqlfrågorna och allt ser där rätt ut.
Problemet är att inget sparas, det verkar som om oConn.Execute inte funkar, av någon anledning.
Är det någon som se om jag gjort något fel?
Tack på förhand!
Vad trött jag blir, när jag satt här och läste igenom inlägget här på wF upptäckte jag att postId hade fel nummer på varje rad.
Allt funkar som det ska nu, men en fråga till.
Om man kör en UPDATE, typ:
UPDATE ... WHERE id = 5
Om id 5 inte finns i tabellen, borde det inte resultera i ett felmeddelande?
@nders Medlem sedan juni 2000 32 967 inlägg
Om id 5 inte finns i tabellen, borde det inte resultera i ett felmeddelande?
Nej, varför skulle det det?
Du kan däremot kontrollera hur många poster som påverkades av din update.
oConn.Execute sSQL, rowsAffected, 128
if rowsAffected = 0 then
' ingen post påverkades
end if
@nders skrev:
Du kan däremot kontrollera hur många poster som påverkades av din update.
Aha, jag har använt det i PHP ett par gånger, men visste inte att funktionen även fanns i ASP.
Tack!