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...
14 svar · 285 visningar · startad av ampy
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?
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...
Värdet har jag fått med för att jag får ju nyheten i textarean.
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.
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,
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.
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
Är det ingen som kan förklara mer detaljerat HUR jag ska skriva. Hur koderna ska se ut.
Ä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
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 =
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%>
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