webForumDet fria alternativet

Funkar inte att spara.

ASP

14 svar · 254 visningar · startad av ampy

Medlem sedan feb. 20011 498 inlägg
Frågan#1

Hej!
Jag kan inte spara ändringen som jag har gjort i formuläret. Så här ser hela koden radera.asp ut:

<!-- #include file = "adovbs.inc" -->

<html>
<head>

<style type="text/css">
body { 
scrollbar-base-color: #FFE784; 
scrollbar-arrow-color: #000000; 
scrollbar-highlight-color: #; 
scrollbar-3dlight-color: #000000; 
scrollbar-darkshadow-color: #000000; 
scrollbar-track-color: #FFF7EF }
</style>

<STYLE type=text/css>A:link {
	COLOR: #000080; TEXT-DECORATION: none
}
A:visited {
	COLOR: #000080; TEXT-DECORATION: none
}
A:active {
	COLOR: #000000; TEXT-DECORATION: none
}
A:hover {
	COLOR: #5A5AFC; TEXT-DECORATION: none
}
</STYLE>

<style type="text/css">
input,textarea {font-family: Verdana; font-size:10px; font-weight: normal; border: 1px solid (color: #000000); background-color:#FFFFFF ; color: #000000}
</style>

</head>

<%
Set Connect = Server.CreateObject("ADODB.Connection") 
		Set RecSet = server.createobject("ADODB.Recordset")
		Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("nyheter.mdb")
	

		sql = "SELECT * FROM installningar"
		recset.open sql, connect, adopenstatic, adlockoptimistic

		bgtable = RecSet("bgtable")
		bgcolor = RecSet("bgcolor")
		bgform = RecSet("bgform")
		link = RecSet("link")
		linkover = RecSet("linkover")
		namn = RecSet("namn")
		bild = RecSet("bild")
		bildurl = RecSet("bildurl")
		username = RecSet("username")
		password = RecSet("password")
		kortfattningar = RecSet("kortfattningar")

		recset.close

		%>

<body bgcolor="<%=bgtable%>">

<font size="1" face="verdana">

<% 
SQL = "SELECT * FROM nyheter WHERE id = "&request.querystring("id")
recset.open SQL, connect, adopenstatic, adlockoptimistic
Do Until RecSet.EOF %>
 
      <form name="form1" method="post" action="radera.asp?vad=uppdatera">

  <INPUT TYPE=text name="datum" SIZE=86 value="<% = RecSet("datum") %>"><br>
    
  <textarea name="nyheter" cols="85" rows="7"><% = RecSet("nyheter") %></textarea><br>

 <INPUT TYPE=text name="datum" SIZE=86 value="<% = RecSet("kortfattat") %>"><br><br>

	<INPUT type="submit" name="Submit" value="Spara">

	
</form>

      

     
  
  <%
	RecSet.MoveNext
	Loop
	RecSet.Close

		If Request.Querystring("vad") = "uppdatera" Then

		Addera = "Select * From nyheter" 
		RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

		RecSet.AddNew

		RecSet("datum") = Request.Form("datum")
		RecSet("nyheter") = Request.Form("nyheter")
		RecSet("kortfattat") = Request.Form("kortfattat")

		RecSet.Update
		recset.close
		

		Response.Redirect "radera.asp"

		End If%>

</body>

</html>

Felmeddelande:

Feltyp:
Microsoft JET Database Engine (0x80040E14)
Syntaxfel (operator saknas) i frågeuttrycket 'id ='.
/nyheter/radera.asp, line 82

Rad 82:

[b]Rad 81:[/b]SQL = "SELECT * FROM nyheter WHERE id = "&request.querystring("id")
[b]Rad 82:[/b]recset.open SQL, connect, adopenstatic, adlockoptimistic

Kan det bero på att jag hämtar ID från inloggad.asp som det blir fel?

------------------
Ampy.cjb.net

Medlem sedan mars 2001196 inlägg
#2

Det verkar som du inte har nåt värde med dig, request.querystring("id"), testa och skriv ut den variabeln. Om du inte får ut nåt värde så är det där du ska leta vidare.

Hoppas det kan hjälpa dig något på vägen...

Medlem sedan feb. 20011 498 inlägg
#3

Värdet har jag fått med för att jag får ju nyheten i textarean.

------------------
Ampy.cjb.net

Medlem sedan mars 20002 836 inlägg
#4

Men när du postar ett formulär så måste du hämta med request.form

cya,
PatrikB

------------------
'## -- second place is the first looser -- ##'

[Redigerat av PatrikB den 19 dec 2001]

Medlem sedan mars 2001196 inlägg
#5

Vad händer om du avslutar SQL-strängen på ett korrekt sätt:

"SELECT * FROM nyheter WHERE id = "&request.querystring("id")&""

Jag såg bara på felmeddelandet och där stod det att "id=" (ingenting) vilket säkert kan ge ett sådant fel.

Medlem sedan juni 200032 967 inlägg
#6

Vad händer om du avslutar SQL-strängen på ett korrekt sätt

Det 'korrekta' sättet är enligt ampys fråga ovan, om jag blir tillfrågad. Varför lägga till en tom sträng, dvs ingenting, till en sträng?

Onödiga knapptryckningar är dåliga knapptryckningar. ;)

Mvh,

------------------
Har du sett Bires lilla häst?

Medlem sedan dec. 200012 464 inlägg
#7

Om du kommer in i avsnittet

If Request.Querystring("vad") = "uppdatera" Then

så gör du response.redirect till radera.asp utan att du anger querystring.

------------------
essentitia preter non sans multiplicandum

Medlem sedan feb. 20011 498 inlägg
#8

>> LarsG

Kan du inte förklara lite mer detaljerat hur jag ska göra.

------------------
Ampy.cjb.net

Medlem sedan mars 20002 836 inlägg
#9

Nu var det ju en uppdatering som skulle ske .... redirecten har ju inte med felet att göra utan felet ligger i att han har ett fel i querystringen eftersom inget id skickas med för att direkt under, med ADODB.Recordset, uppdatera en post och SEDAN ska redirecten utföras

Du måste se till att du får med dig id'et antingen genom querystring eller genom tex ett hidden field i formet

cya,
PatrikB

------------------
'## -- second place is the first looser -- ##'

Medlem sedan feb. 20011 498 inlägg
#10

Är det ingen som kan förklara mer detaljerat HUR jag ska skriva. Hur koderna ska se ut.

------------------
Ampy.cjb.net

Medlem sedan mars 20002 836 inlägg
#11

Ändra:

<% 
SQL = "SELECT * FROM nyheter WHERE id = "&request.querystring("id")
recset.open SQL, connect, adopenstatic, adlockoptimistic
Do Until RecSet.EOF %>

<form name="form1" method="post" action="radera.asp?vad=uppdatera">

till:

<% 
SQL = "SELECT * FROM nyheter"
recset.open SQL, connect, adopenstatic, adlockoptimistic
Do Until RecSet.EOF %>

<form name="form1" method="post" action="radera.asp?vad=uppdatera&id=<% =RecSet("Id")%>">

och sedan ändrar du:

If Request.Querystring("vad") = "uppdatera" Then

Addera = "Select * From nyheter WHERE id = " & request.QueryString("id") 
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

RecSet.AddNew

RecSet("datum") = Request.Form("datum")

cya,
PatrikB

------------------
'## -- second place is the first looser -- ##'

Medlem sedan mars 2001196 inlägg
#12

Ursäkta för mitt inlägg ovan om korrekt skrivsätt angående variabel i sql-satsen, hoppas inte det ställde till för mycket för dig. lolukokasos = :( :r

Medlem sedan juni 200032 967 inlägg
#13

Tillägg: lolukokasos, din SQL-sats är inte fel, bara så du vet. :)

Mvh,

------------------
Har du sett Bires lilla häst?

Medlem sedan feb. 20011 498 inlägg
#14

Nu ser min kod ut så här på sidan radera.asp:

<!-- #include file = "adovbs.inc" -->

<html>
<head>

<style type="text/css">
body { 
scrollbar-base-color: #FFE784; 
scrollbar-arrow-color: #000000; 
scrollbar-highlight-color: #; 
scrollbar-3dlight-color: #000000; 
scrollbar-darkshadow-color: #000000; 
scrollbar-track-color: #FFF7EF }
</style>

<STYLE type=text/css>A:link {
	COLOR: #000080; TEXT-DECORATION: none
}
A:visited {
	COLOR: #000080; TEXT-DECORATION: none
}
A:active {
	COLOR: #000000; TEXT-DECORATION: none
}
A:hover {
	COLOR: #5A5AFC; TEXT-DECORATION: none
}
</STYLE>

<style type="text/css">
input,textarea {font-family: Verdana; font-size:10px; font-weight: normal; border: 1px solid (color: #000000); background-color:#FFFFFF ; color: #000000}
</style>

</head>

<%
Set Connect = Server.CreateObject("ADODB.Connection") 
		Set RecSet = server.createobject("ADODB.Recordset")
		Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("nyheter.mdb")
	

		sql = "SELECT * FROM installningar"
		recset.open sql, connect, adopenstatic, adlockoptimistic

		bgtable = RecSet("bgtable")
		bgcolor = RecSet("bgcolor")
		bgform = RecSet("bgform")
		link = RecSet("link")
		linkover = RecSet("linkover")
		namn = RecSet("namn")
		bild = RecSet("bild")
		bildurl = RecSet("bildurl")
		username = RecSet("username")
		password = RecSet("password")
		kortfattningar = RecSet("kortfattningar")

		recset.close

		%>

<body bgcolor="<%=bgtable%>">

<font size="1" face="verdana">

<% 
SQL = "SELECT * FROM nyheter WHERE id = " & request.QuerySTring("id")
recset.open SQL, connect, adopenstatic, adlockoptimistic%> 
<form name="form1" method="post" action="radera.asp?vad=uppdatera&id=<% =RecSet("Id")%>">

  <INPUT TYPE=text name="datum" SIZE=86 value="<% = RecSet("datum") %>"><br>
    
  <textarea name="nyheter" cols="85" rows="7"><% = RecSet("nyheter") %></textarea><br>

 <INPUT TYPE=text name="datum" SIZE=86 value="<% = RecSet("kortfattat") %>"><br><br>

	<INPUT type="submit" name="Submit" value="Spara">

	
</form>

      

     
  
  <%
	
	RecSet.Close

		If Request.Querystring("vad") = "uppdatera" Then
	
		

		Addera = "Select * From nyheter WHERE id = " & request.QueryString("id") 
		RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

		
	

		RecSet.AddNew

		RecSet("datum") = Request.Form("datum")
		RecSet("nyheter") = Request.Form("nyheter")
		RecSet("kortfattat") = Request.Form("kortfattat")

		RecSet.Update
		recset.close
		connect.close	
		

		Response.Redirect "radera.asp?vad=uppdatera2"

		End If

		If Request.Querystring("vad") = "uppdatera2" Then

		Response.Write "Du har nu ändrat ditt meddelande och detta fönster kommer att stängas inom 5 sekunder."

		End If%>
</body>

</html>

Nu funkar det i alla fall att spara men sedan när man har sparat så ska man skickas till sidan radera.asp?vad=uppdatera2. Men det gör man inte för att det kommer detta felmeddelande:

 Feltyp:
Microsoft JET Database Engine (0x80040E14)
Syntaxfel (operator saknas) i frågeuttrycket 'id ='.
/nyheter/radera.asp, line 83

Rad 83:

[b]Rad 82: [/b]SQL = "SELECT * FROM nyheter WHERE id = " & request.QuerySTring("id")
[b]Rad 83: [/b]recset.open SQL, connect, adopenstatic, adlockoptimistic%>

------------------
Ampy.cjb.net

Medlem sedan mars 20002 836 inlägg
#15
Response.Redirect "radera.asp?vad=uppdatera2[b]&id=" & Request.QueryString("id")

Du skulle kunna spara Request.QueryString("id") i en egen variabel överst på sidan för att spara på antalet anrop till request objektet.

cya,
PatrikB

------------------
-=* IF there is a wrong way to do something, then someone will do it *=-

260 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)