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 · 254 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?
------------------
Ampy.cjb.net
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...
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]
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,
------------------
Har du sett Bires lilla häst?
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
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 -- ##'
Är det ingen som kan förklara mer detaljerat HUR jag ska skriva. Hur koderna ska se ut.
------------------
Ampy.cjb.net
Ä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 -- ##'
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
Tillägg: lolukokasos, din SQL-sats är inte fel, bara så du vet. :)
Mvh,
------------------
Har du sett Bires lilla häst?
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
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 *=-