webForumDet fria alternativet

Sql frågor som körs med utan resultat.

ASP

3 svar · 453 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#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&amp;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&amp;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!

Medlem sedan feb. 20034 441 inlägg
#2

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?

Medlem sedan juni 200032 967 inlägg
#3

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
Medlem sedan feb. 20034 441 inlägg
#4

@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!

394 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
221 ms — deklarationer (db)
0 ms — hämta statistik (cache)
170 ms — hämta tråd, inlägg och bilagor (db)
221 ms — ändringar (db)