webForumDet fria alternativet

formulär

ASP

27 svar · 623 visningar · startad av Choronzon

Medlem sedan aug. 20011 346 inlägg
Frågan#1

Vad gör jag för fel, och hur gör jag det bättre? Jag skulle alltså vilja skicka innehållet i formuläret till databasen, och dessutom se innehållet i formulärfälten. En sorts adminsida hade jag tänkt alltså! :/

Skulle uppskatta om någon vill hjälpa mig på traven! :)

<!-- #include file="adovbs.inc" -->
<%
	If Session("login") <> "ok" Then
		Session("meddelande") = " utloggad, logga in igen!"
		Response.Redirect "utloggad.asp"
	End If

	Set Connect = Server.CreateObject("ADODB.Connection") 
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/text.mdb")&";pwd=pwd"

	Set RecSet = Server.CreateObject("ADODB.Recordset")

	Addera = "Select * From members Where id = " &Request.QueryString("checkid")
	RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

	If Session("meddelande") <> "" Then
		Response.Write Session("meddelande")
		Session("meddelande") = ""
	End If
	
	If request.querystring("change") = "codes" then 

		if request.querystring("checkid") = recset("id") then
			leftoverone = recset("leftoverone") 
			leftone = recset("leftone") 
			leftovertwo = recset("leftovertwo")
			lefttwo = recset("lefttwo") 				
			leftoverthree = recset("leftoverthree") 
			leftthree = recset("leftthree") 				
			recset.update
		End If
	End If
%>
	
	<html>
	<body>
	<a href="settings.asp?change=codes&checkid=213">länk</a>
	<a href="settings.asp?change=codes&checkid=214">länk</a>
	<a href="settings.asp?change=codes&checkid=215">länk</a>
<%	
	if request.querystring("checkid") = "213" then
%>
		<form method="post" name="213" action="settings.asp?change=codes&checkid=213">
<%	
		elseif request.querystring("checkid") = "214" then
%>
		<form method="post" name="214" action="settings.asp?change=codes&checkid=214">
<%	
		elseif request.querystring("checkid") = "215" then
%>	
		<form method="post" name="215" action="settings.asp?change=codes&checkid=215">
<%
	end if
%>

<input type="text" name="leftoverOne" size="60" value="<%=leftoverone%>">
<textarea cols="45" rows="12" name="leftone"><%=leftone%></textarea>
<input class="input" type="text" name="leftovertwo" size="60" value="<%=leftovertwo%>">
<textarea cols="45" rows="12" name="lefttwo"><%=lefttwo%></textarea>
<input type="text" name="leftoverthree" size="60" value="<%=leftoverthree%>">
<textarea cols="45" rows="12" name="leftthree"><%=leftthree%></textarea>
											
</form>
</body>
</html>
<%
RecSet.Close
Connect.Close
Set RecSet = nothing
Set Connect = nothing
%>
Medlem sedan okt. 20005 273 inlägg
#2

VAd är det som blir fel ?

Medlem sedan aug. 20011 346 inlägg
#3

Inget syns i formulären, och det funkar inte att posta :/..var ett tag sen jag kollade på asp, tänkte om jag gjort något grundläggande fel, eller glömt något väsentligt?

Medlem sedan mars 2002777 inlägg
#4

Prova med att konvertera (Cstr, Cint, Clng, etc) subtyperna i dina if-satser så du är säker på att de jämförs korrekt.

Medlem sedan aug. 20011 346 inlägg
#5

Kan du ge något litet exempel, är inte riktigt med på vad du menar..

Medlem sedan mars 2002777 inlägg
#6
if Cstr(request.querystring("checkid")) = "213" then
Medlem sedan aug. 20011 346 inlägg
#7

Inget felmeddelande och inget händer:/

Det här är alltså settings.asp, den enda filen.

<!-- #include file="adovbs.inc" -->
<%
	Set Connect = Server.CreateObject("ADODB.Connection") 
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/text.mdb")&";pwd=pwd"

	Set RecSet = Server.CreateObject("ADODB.Recordset")

	Addera = "Select * From members Where id = " &Cstr(Request.QueryString("checkid"))
	RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

	
	If Cstr(request.querystring("change") = "codes") then 

		if Cstr(request.querystring("checkid") = recset("id")) then
			leftoverone = recset("leftoverone") 
			leftone = recset("leftone") 
			leftovertwo = recset("leftovertwo")
			lefttwo = recset("lefttwo") 				
			leftoverthree = recset("leftoverthree") 
			leftthree = recset("leftthree") 				
			recset.update
		End If
	End If
%>
	
	<html>
	<body>
	<a href="settings.asp?change=codes&checkid=213">länk</a>
	<a href="settings.asp?change=codes&checkid=214">länk</a>
	<a href="settings.asp?change=codes&checkid=215">länk</a>
<%	
	if Cstr(request.querystring("checkid") = "213") then
%>
	<form method="post" name="213" action="settings.asp?change=codes&checkid=213">
<%	
		elseif Cstr(request.querystring("checkid") = "214") then
%>
	<form method="post" name="214" action="settings.asp?change=codes&checkid=214">
<%	
		elseif Cstr(request.querystring("checkid") = "215") then
%>	
	<form method="post" name="215" action="settings.asp?change=codes&checkid=215">
<%
	end if
%>

		<input type="text" name="leftoverOne" size="60" value="<%=leftoverone%>">
		<textarea cols="45" rows="12" name="leftone"><%=leftone%></textarea>
		<input class="input" type="text" name="leftovertwo" size="60" value="<%=leftovertwo%>">
		<textarea cols="45" rows="12" name="lefttwo"><%=lefttwo%></textarea>
		<input type="text" name="leftoverthree" size="60" value="<%=leftoverthree%>">
		<textarea cols="45" rows="12" name="leftthree"><%=leftthree%></textarea>
		<input type="submit" value="Skicka">											
	</form>
</body>
</html>
<%
RecSet.Close
Connect.Close
Set RecSet = nothing
Set Connect = nothing
%>
Medlem sedan aug. 20011 346 inlägg
#8

oo
 L
 /

Första länken till själva sidan <a href="settings.asp?change=codes&checkid=213">redigera</a>, när jag kommer dit vill jag att posterna ska synas, varför gör dom inte det? Någon?

Medlem sedan juni 200032 967 inlägg
#9

Det ser ut som att det är det fetmarkerade nedan det är fel på, så du aldrig kommer in i blocket.

Du kan ta bort de två markerade raderna eftersom du gör den jämförelsen i SQL-frågan.

		[b]if Cstr(request.querystring("checkid") = recset("id")) then[/b]
			leftoverone = recset("leftoverone") 
			leftone = recset("leftone") 
			leftovertwo = recset("leftovertwo")
			lefttwo = recset("lefttwo") 				
			leftoverthree = recset("leftoverthree") 
			leftthree = recset("leftthree") 				
			recset.update
		[b]End If[/b]

Dessutom ser det ut som att du gör tilldelningarna åt fel håll om du ska göra en update. Inga förändringar görs med koden ovan.

Mvh,

Medlem sedan aug. 20011 346 inlägg
#10

Jo, nu syns ju i alla fall innehållet i posterna, men när jag skrivit in nya uppgifter och skickar så tar den bara det gamla ur db-n och skriver det igen, innehållet byts inte ut..

Hur skriver jag för att ändringar ska göras då?

Medlem sedan juni 200032 967 inlägg
#11

Istället för att använda recordsetmetoden .update tycker jag att du ska skriva en SQL-fråga som uppdaterar tabellen.

Exempel, om fälten är av taltyp:

StrSQL = "UPDATE Members SET leftoverone = " & variabelsominnehållernågot & ", leftone = " & annanvariabel & "  WHERE id = " & Request.QueryString("checkid")

Om text:

StrSQL = "UPDATE Members SET leftoverone = '" & variabelsominnehållernågot & "', leftone = '" & annanvariabel & "'  WHERE id = " & Request.QueryString("checkid")

Mvh,

Medlem sedan aug. 20011 346 inlägg
#12

Förstår inte riktigt hur du menar..såhär eller? :r

<%
	Set Connect = Server.CreateObject("ADODB.Connection") 
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/text.mdb")&";pwd=pwd"

	Set RecSet = Server.CreateObject("ADODB.Recordset")

	Addera = "Select * From members Where id = " &Cstr(Request.QueryString("checkid"))
	RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

	
	If Cstr(request.querystring("change") = "codes") then 

			leftoverone = recset("leftoverone") 
			leftone = recset("leftone") 
			leftovertwo = recset("leftovertwo")
			lefttwo = recset("lefttwo") 				
			leftoverthree = recset("leftoverthree") 
			leftthree = recset("leftthree") 				
			StrSQL = "UPDATE Members SET leftoverone = '" & leftoverone & "', leftone = '" & leftone & "'  WHERE id = " & Request.QueryString("checkid")

	End If
%>
	
	<html>
	<body>
	<a href="settings.asp?change=codes&checkid=213">länk</a>
	<a href="settings.asp?change=codes&checkid=214">länk</a>
	<a href="settings.asp?change=codes&checkid=215">länk</a>
<%	
	if Cstr(request.querystring("checkid") = "213") then
%>
	<form method="post" name="213" action="settings.asp?change=codes&checkid=213">
<%	
		elseif Cstr(request.querystring("checkid") = "214") then
%>
	<form method="post" name="214" action="settings.asp?change=codes&checkid=214">
<%	
		elseif Cstr(request.querystring("checkid") = "215") then
%>	
	<form method="post" name="215" action="settings.asp?change=codes&checkid=215">
<%
	end if
%>

		<input type="text" name="leftoverOne" size="60" value="<%=leftoverone%>">
		<textarea cols="45" rows="12" name="leftone"><%=leftone%></textarea>
		<input class="input" type="text" name="leftovertwo" size="60" value="<%=leftovertwo%>">
		<textarea cols="45" rows="12" name="lefttwo"><%=lefttwo%></textarea>
		<input type="text" name="leftoverthree" size="60" value="<%=leftoverthree%>">
		<textarea cols="45" rows="12" name="leftthree"><%=leftthree%></textarea>
		<input type="submit" value="Skicka">											
	</form>
</body>
</html>
<%
RecSet.Close
Connect.Close
Set RecSet = nothing
Set Connect = nothing
%>
Medlem sedan juni 200032 967 inlägg
#13

Du måste exekvera SQL-frågan också:

			StrSQL = "UPDATE Members SET leftoverone = '" & leftoverone & "', leftone = '" & leftone & "'  WHERE id = " & Request.QueryString("checkid")
			Connect.Execute strSQL,,128

Om du ska uppdatera med de där värdena så händer ingenting, eftersom det är de värdena som var i databasen från början.
Vad är det för värden du ska uppdatera med, och var kommer de ifrån?

Medlem sedan dec. 19996 721 inlägg
#14

.....och du ska inte köra CStr så där... Flytta parenteserna :)

Ex:

if Cstr(request.querystring("checkid")) = "213" then

Medlem sedan aug. 20011 346 inlägg
#15

Det är ju det jag skriver i formuläret som jag vill byta ut mot det gamla i posterna/kolumnerna i db-n..

<%
	Set Connect = Server.CreateObject("ADODB.Connection") 
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/text.mdb")&";pwd=pwd"

	Set RecSet = Server.CreateObject("ADODB.Recordset")

	Addera = "Select * From members Where id = " &Cstr(Request.QueryString("checkid"))
	RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

	
	If Cstr(request.querystring("change")) = "codes" then 

			leftoverone = recset("leftoverone") 
			leftone = recset("leftone") 
			leftovertwo = recset("leftovertwo")
			lefttwo = recset("lefttwo") 				
			leftoverthree = recset("leftoverthree") 
			leftthree = recset("leftthree") 				
			StrSQL = "UPDATE Members SET leftoverone = '" & leftoverone & "', leftone = '" & leftone & "'  WHERE id = " & Request.QueryString("checkid")
			Connect.Execute strSQL,,128

	End If
%>
	
	<html>
	<body>
	<a href="settings.asp?change=codes&checkid=213">länk</a>
	<a href="settings.asp?change=codes&checkid=214">länk</a>
	<a href="settings.asp?change=codes&checkid=215">länk</a>
<%	
	if Cstr(request.querystring("checkid")) = "213" then
%>
	<form method="post" name="213" action="settings.asp?change=codes&checkid=213">
<%	
		elseif Cstr(request.querystring("checkid")) = "214" then
%>
	<form method="post" name="214" action="settings.asp?change=codes&checkid=214">
<%	
		elseif Cstr(request.querystring("checkid")) = "215" then
%>	
	<form method="post" name="215" action="settings.asp?change=codes&checkid=215">
<%
	end if
%>

		<input type="text" name="leftoverOne" size="60" value="<%=leftoverone%>">
		<textarea cols="45" rows="12" name="leftone"><%=leftone%></textarea>
		<input class="input" type="text" name="leftovertwo" size="60" value="<%=leftovertwo%>">
		<textarea cols="45" rows="12" name="lefttwo"><%=lefttwo%></textarea>
		<input type="text" name="leftoverthree" size="60" value="<%=leftoverthree%>">
		<textarea cols="45" rows="12" name="leftthree"><%=leftthree%></textarea>
		<input type="submit" value="Skicka">											
	</form>
</body>
</html>
<%
RecSet.Close
Connect.Close
Set RecSet = nothing
Set Connect = nothing
%>
Medlem sedan dec. 19996 721 inlägg
#16

i den här delen:

Addera = "Select * From members Where id = " &Cstr(Request.QueryString("checkid"))
	RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

	
	If Cstr(request.querystring("change")) = "codes" then 

			leftoverone = recset("leftoverone") 
			leftone = recset("leftone") 
			leftovertwo = recset("leftovertwo")
			lefttwo = recset("lefttwo") 				
			leftoverthree = recset("leftoverthree") 
			leftthree = recset("leftthree") 				
			StrSQL = "UPDATE Members SET leftoverone = '" & leftoverone & "', leftone = '" & leftone & "'  WHERE id = " & Request.QueryString("checkid")
			Connect.Execute strSQL,,128

	End If

...så plockar du ut data från databasen, och stoppar i den igen på samma ställe. Lite onödigt...

Är det inte meningen att du ska ta från formuläret, med:

leftoverone = request("leftoverone")

osv.

?

Medlem sedan aug. 20011 346 inlägg
#17

Hmm, jo, jag har nog snurrat till det verkar det som.. :l
Det är nog meningen, hur ska jag lägga upp det istället då?

Medlem sedan mars 20021 716 inlägg
#18

Jag som inte kan nått om det här blir alldelles snurrig av alla koder, kan ingen skriva efter varje rad:
'Förklaring vad denna rad gör
så vi andra kan lära oss av detta?

Medlem sedan dec. 19996 721 inlägg
#19

Kanske så här:

<%
	Set Connect = Server.CreateObject("ADODB.Connection") 
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/text.mdb")&";pwd=pwd"

	

	
	If Cstr(request.querystring("change")) = "codes" then 

			leftoverone = replace(request("leftoverone"),"'","''")
			leftone = replace(request("leftone") ,"'","''")
			leftovertwo = replace(request("leftovertwo"),"'","''")
			lefttwo = replace(request("lefttwo") ,"'","''")
			leftoverthree = replace(request("leftoverthree"),"'","''")
			leftthree = replace(request("leftthree") ,"'","''")
			
			strSQL = "UPDATE Members SET " & _
				 "leftoverone = '" & leftoverone & "', leftone = '" & leftone & "'," & _
				 "leftovertwo = '" & leftovertwo & "', lefttwo = '" & lefttwo & "'," & _
				 "leftoverthree = '" & leftoverthree & "', leftthree = '" & leftthree & "'," & _
				 "WHERE id = " & Request.QueryString("checkid")
			Connect.Execute strSQL,,128

	End If

	Set RecSet = Server.CreateObject("ADODB.Recordset")

	strSQL = "Select * From members Where id = " & Request.QueryString("checkid")
	RecSet.Open strSQL, Connect, adOpenStatic, adLockOptimistic

	if not RecSet.EOF then

%>
	
	<html>
	<body>
	<a href="settings.asp?change=codes&checkid=213">länk</a>
	<a href="settings.asp?change=codes&checkid=214">länk</a>
	<a href="settings.asp?change=codes&checkid=215">länk</a>
	<form method="post" name="213" action="settings.asp?change=codes&checkid=<%=request.querystring("checkid")%>">
		<input type="text" name="leftoverOne" size="60" value="<%=RecSet("leftoverone")%>">
		<textarea cols="45" rows="12" name="leftone"><%=RecSet("leftone")%></textarea>
		<input class="input" type="text" name="leftovertwo" size="60" value="<%=RecSet("leftovertwo")%>">
		<textarea cols="45" rows="12" name="lefttwo"><%=RecSet("lefttw")o%></textarea>
		<input type="text" name="leftoverthree" size="60" value="<%=RecSet("leftoverthree")%>">
		<textarea cols="45" rows="12" name="leftthree"><%=RecSet("leftthree")%></textarea>
		<input type="submit" value="Skicka">											
	</form>
	</body>
	</html>
	<%

	End If
RecSet.Close
Connect.Close
Set RecSet = nothing
Set Connect = nothing
%>
Medlem sedan aug. 20011 346 inlägg
#20

Kanon med så mycket hjälp, får ett fel dock:

Microsoft OLE DB Provider for ODBC Drivers fel '80040e14' 

[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i UPDATE-uttryck. 

settings.asp, rad 23

och rad 23 är:

Connect.Execute strSQL,,128
276 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)