webForumDet fria alternativet

formulär

ASPur ASP

27 svar · 621 visningar · startad av Choronzon

ChoronzonMedlem sedan aug. 20011 346 inlägg
#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
%>
icaaqMedlem sedan okt. 20005 273 inlägg
#2

VAd är det som blir fel ?

ChoronzonMedlem 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?

LAMPMedlem 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.

ChoronzonMedlem sedan aug. 20011 346 inlägg
#5

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

LAMPMedlem sedan mars 2002777 inlägg
#6
if Cstr(request.querystring("checkid")) = "213" then
ChoronzonMedlem 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
%>
ChoronzonMedlem 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?

@ndersMedlem sedan juni 200032 969 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,

ChoronzonMedlem 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å?

@ndersMedlem sedan juni 200032 969 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,

ChoronzonMedlem 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
%>
@ndersMedlem sedan juni 200032 969 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?

emissionMedlem 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

ChoronzonMedlem 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
%>
emissionMedlem 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.

?

ChoronzonMedlem 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å?

[AMD]ZmasterMedlem 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?

emissionMedlem 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
%>
ChoronzonMedlem 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
139 ms totalt · 3 externa anrop · v20260731065814-full.363dfaf6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)