webForumDet fria alternativet

Problem med gästbok

ASPur ASP

8 svar · 371 visningar · startad av logic

Medlem sedan maj 200481 inlägg
Frågan#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!

Medlem sedan juni 200032 969 inlägg
#2

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.

Medlem sedan maj 200481 inlägg
#3

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!

Medlem sedan juni 200032 969 inlägg
#4

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

Medlem sedan juni 200032 969 inlägg
#5

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"))
Medlem sedan maj 200481 inlägg
#6

@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

Medlem sedan juni 200032 969 inlägg
#7

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
Medlem sedan maj 200481 inlägg
#8

Tack!

Medlem sedan jan. 2004128 inlägg
#9

isnull(rs("svar"))

???

131 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)