L logic Medlem sedan maj 2004 81 inlägg Frågan 4 feb. 2005 11:38 #1 Hej! Jag har stora problem med ett gästboksscript. Förstår inte felet, nån som kan upplya mig?
Microsoft VBScript compilation error '800a0401'
Expected end of statement
/kagg/projekt/ms079/gb/gb.asp, line 44
sql = sql & "values ('"&namn&"','"&email&"','"&hemsida&"','"&ip&"','"&inlagg&"')"
----------------------------------------------^
Koden ser ut såhär:
<html>
<head>
<style type="text/css">
<!--
.inlagg {
padding: 5px;
width: 350px;
border: 1px solid #999999;
overflow: auto;
background-color: #FFF;
font-family: verdana;
font-size: 12px;
}
-->
</style>
</head>
<body>
<form action="gb.asp?post=1" method="post">
Namn: <input type="text" name="namn"><br />
Email: <input type="text" name="email"><br />
Hemsida: <input type="text" name="hemsida"><br />
Inlägg:<br /><textarea name="inlagg"></textarea><br />
<input type="submit" value="Ok">
</form>
<%
'Koppling till DB!
adress=Server.MapPath("gb.mdb")
Set conn = Server.CreateObject("ADODB.Connection")
basen = "driver={Microsoft Access Driver (*.mdb)};dbq="&adress
'Skapar inlägg
if request.querystring("post") > "" and request.form("inlagg") > "" then
namn = request.form("namn")
email = request.form("email")
hemsida = request.form("hemsida")
ip = request.servervariables("remote_addr")
inlagg = request.form("inlagg")
conn.open basen
sql = "select * from gb where inlagg = '"&inlagg&"'"
set rs = conn.execute(sql)
if rs.eof then
'set rs = nothing
sql = "insert into gb (namn,email,hemsida,ip,inlagg)"
sql = sql & "values ('"&namn&"','"&email&"','"&hemsida&"','"&ip&"','"&inlagg&"')"
conn.execute(sql)
else
Response.write "Försök till dubbelpost!"
end if
conn.close
end if
conn.open basen
sql = "select * from gb order by ID DESC"
set rs = conn.execute(sql)
namn = rs("namn")
server.htmlencode("namn")
email = rs("email")
server.htmlencode("email")
hemsida = rs("hemsida")
server.htmlencode("hemsida")
inlagg = rs("inlagg")
server.htmlencode("inlagg")
do until rs.eof
with response
.write "<table class=inlagg><tr><td>"
.write namn
.write " | "
.write "<a href=mailto:"
.write email
.write "><img src=mail.gif border=0></a>"
.write " | "
.write hemsida
.write " | "
.write rs("ip")
.write "</td></tr><tr><td>"
.write inlagg
.write "</td></tr>"
end with
if rs("svar") = "" then
response.write "<tr><td><i>Marcus har inte svarat på det här inlägget än.</i>"
response.write "</td></tr></table><br />"
else
response.write "<tr><td>"
response.write rs("svar")
response.write "</td></tr></table><br />"
end if
rs.movenext
loop
rs.close
set rs = nothing
%>
</body>
</html>
Tabellen heter gb och fälten heter ID, namn, email, hemsida, ip, inlagg och svar. Nån aning?
Tack på förhand!
@nders Medlem sedan juni 2000 32 967 inlägg Mellanslag är viktiga ibland.
sql = "insert into gb (namn,email,hemsida,ip,inlagg)"
sql = sql & "values ('"&namn&"','"&email&"','"& hemsida&"','"&ip&"','"&inlagg&"')"
Jag skulle dock föreslå att du lägger in lite fler mellanslag vid dina konkateneringar för att få koden mer lättläst, men det är bara min humla. Mellanslag före h dock, det är viktigt.
Slutligen: försök se till att inte posta så mycket oväsentlig kod.
L logic Medlem sedan maj 2004 81 inlägg Tack! Det fungerade kanon. Ber om ursäkt för överflödig kod, men jag var orolig för att det var fel på någon annan plats ;)
Nån aning om hur jag skulle kunna ändra utskriften så "svar"-funktionen fungerar?
Tack!
@nders Medlem sedan juni 2000 32 967 inlägg Vad är problemet? Hur hade du tänkt att den skulle fungera?
Jag skulle också vilja att du indenterade din kod, så den går att läsa lite bättre.
Mvh
@nders Medlem sedan juni 2000 32 967 inlägg Dessutom, det här kodblocket är felaktigt:
namn = rs("namn")
server.htmlencode("namn")
email = rs("email")
server.htmlencode("email")
hemsida = rs("hemsida")
server.htmlencode("hemsida")
inlagg = rs("inlagg")
server.htmlencode("inlagg")
Så kan man inte skriva. Så här borde det se ut:
namn = server.htmlencode(rs("namn"))
email = server.htmlencode(rs("email"))
hemsida = server.htmlencode(rs("hemsida"))
inlagg = server.htmlencode(rs("inlagg"))
L logic Medlem sedan maj 2004 81 inlägg @nders, det ska finnas en liten text under inlägget där:
Om svar finns, ska det stå.
Annars ska det stå "Marcus har inte svarat på det här inlägget än.".
Url till sidan: http://skoljobb.kalmar.se/kagg/projekt/ms079/gb/gb.asp
@nders Medlem sedan juni 2000 32 967 inlägg Nu tror jag att jag hajar. Problemet består nog i att fältet svar inte är "tomt", utan innehåller NULL. Prova:
if "" & rs("svar") = "" then