Såg redan ett fel - som dock inte har med det hela att göra:
skall naturligtvis vara
Do while NOT rsSkriv.EOF
17 svar · 403 visningar · startad av plelkes
Jag får inte till detta med tabell och Response.Write
Med nedanståend kod:
<html>
<head>
<title>gästbokenp</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head><body bgcolor="#FFFFFF" text="#000000">
<html>
<head>
<title>gästbokenp</title>
</head><body bgcolor="#FFFFFF" text="#000000">
<p align="center"><font size="7"><b><i><font color="#FFCC33">Välkommen till
skolans gästbok</font></i></b></font></p>
<% dim minCon 'Connection
dim rsSkriv 'recordsetten för nya inlägg
dim strSQL
Set minCon = Server.CreateObject("ADODB.Connection")
set rsSkriv =Server.CreateObject("ADODB.Recordset")
minCon.Open "DRIVER={Microsoft Access Driver (*.mdb}; DBQ="&Server.MapPath("guests.mdb")
strSQL = "SELECT * FROM guestbook ORDER by ID DESC"
rsSkriv.Open strSQL, minCon, 3, 3
rsSkriv.AddNew
Response.Write ("<table width="780" border="2" cellspacing="5" cellpadding="5">")
Do while NOT rsSkrivEOF
Response.Write ("<tr>")
Response.Write ("<td bgcolor="#666666" width="114">)"
Response.Write ("<p><b><font size="5"><u><font color="#0000FF">Namn:</font></u></font></b></p>")
Response.Write ("</td>")
Response.Write ("<td width="507">")
Response.Write ("rsSkriv("Namn")=Request.Form("namn")")
Response.Write ("</td>")
Response.Write ("<td width="99">")
Response.Write ("<% =date %>")
Response.Write ("</td>")
Response.Write ("</tr>")
<tr>
<td bgcolor="#666666" width="114">
<p><b><font size="5"><u><font color="#0000FF">E-post:</font></u></font></b></p>
</td>
<td colspan="2"> </td>
</tr>
<tr>
<td bgcolor="#666666" width="114">
<p><b><font size="5"><u><font color="#0000FF">Hemsida:</font></u></font></b></p>
</td>
<td colspan="2"> </td>
</tr>
<tr>
<td bgcolor="#666666" width="114">
<p><b><font size="5"><u><font color="#0000FF">Meddelande:</font></u></font></b></p>
</td>
<td colspan="2"> </td>
</tr>
</table>
%>
</body>
</html>
Får jag fäljande upp på skärmen:
Välkommen till skolans gästbok
") Response.Write ("") Response.Write ("") E-post: _ Hemsida: _ Meddelande: _ %>
Såg redan ett fel - som dock inte har med det hela att göra:
skall naturligtvis vara
Do while NOT rsSkriv.EOF
Det är mycket märkligt att du inte får felmeddelanden av denna kod. Har du on error resume next högre upp i koden?
Slutsats: gör om, gör rätt. ;)
Mvh,
tack för ditt snabba svar @nders!
Kan fu ge lite utförligare råd på hur jag kan rensa upp och rätta till?
<html>
<head>
<title>gästbokenp</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head><body bgcolor="#FFFFFF" text="#000000">
<html>
<head>
<title>gästbokenp</title>
</head><body bgcolor="#FFFFFF" text="#000000">
<p align="center"><font size="7"><b><i><font color="#FFCC33">Välkommen till
skolans gästbok</font></i></b></font></p>
<% dim minCon 'Connection
dim rsSkriv 'recordsetten för nya inlägg
dim strSQL
Set minCon = Server.CreateObject("ADODB.Connection")
set rsSkriv =Server.CreateObject("ADODB.Recordset")
minCon.Open "DRIVER={Microsoft Access Driver (*.mdb}; DBQ="&Server.MapPath("guests.mdb")
strSQL = "SELECT * FROM guestbook ORDER by ID DESC"
rsSkriv.Open strSQL, minCon, 3, 3
rsSkriv.AddNew
[b]Response.Write ("<table width=780 border=2 cellspacing=5 cellpadding=5>")
Do while NOT rsSkrivEOF
Response.Write ("<tr><td bgcolor=#666666 width=114>")
Response.Write ("<p><b><font size=5><u><font color=#0000FF>Namn:</font></u></font></b></p>")
Response.Write ("</td><td width=507>")
Response.Write (rsSkriv("Namn") & " = " & Request.Form("namn") & "</td>")
Response.Write ("<td width=99>" & Date & "</td></tr>")
%>[/b]
<tr>
<td bgcolor="#666666" width="114">
<p><b><font size="5"><u><font color="#0000FF">E-post:</font></u></font></b></p>
</td>
<td colspan="2"> </td>
</tr>
<tr>
<td bgcolor="#666666" width="114">
<p><b><font size="5"><u><font color="#0000FF">Hemsida:</font></u></font></b></p>
</td>
<td colspan="2"> </td>
</tr>
<tr>
<td bgcolor="#666666" width="114">
<p><b><font size="5"><u><font color="#0000FF">Meddelande:</font></u></font></b></p>
</td>
<td colspan="2"> </td>
</tr>
</table>
</body>
</html>
Till att börja med: har du on error resume next, bort med den.
Såg en sak... varför har du med rsSkriv.AddNew?
Tack för ditt svar Engine^
varför har du med rsSkriv.AddNew?
jag skall ju uppdatera en databas och trodde jag att jag måste "berätta" för recordsettet att vi lägger till en ny rekord.
Stämmer inte detta?
M'kay. Jag skulle dock använda mig av en sql-sats istället.
Men du öppnar bara recordset:et för att lägga till. Det kommer aldrig någon .Update(), så därför började jag att fundera. Men det kanske kommer i ett senare skede?
Jaja... fråga på du :)
Engine^,
det är tänkt att det skall komma
Update()
Jag skulle dock använda mig av en sql-sats iställe
Hur skulle/borde SQL´en se ut?
Som du förstår så är det tänkt att med hjälp av ett formulär lägga till databasen guest.mdb´s tabell guestbook
Det beror ju på hur du vill skicka datat, men det skulle kunna se ut så här:
<form action="getdata.asp" method="post">
Namn: <input type="text" name="strNamn" maxlength="20"><br>
E-post: <input type="text" name="strEMail" maxlength="30"><br>
Hemsida: <input type="text" name="strHemsida" maxlength="30"><br>
Meddelande: <textarea name="strMeddelande" rows="10"></textarea><br>
<input type="submit" name="btnSubmit" value="Skicka">
</form>
Ovan bakar du in i din sida... nedan kommer sidan som ska ta hand om formuläret när det postats...
<%
Dim objC
Set objC = Server.CreateObject(ADODB.Connection)
objC.Provider = "Microsoft.Jet.OleDB.4.0"
objC.DataSource = Server.MapPath("guests.mdb")
objC.Open
strSQL = "INSERT INTO guestbook (namn, epost, hemsida, meddelande) " & _
"VALUES ('"& Request.Form("strNamn") &"', '"& Request.Form("strEMail") &"', '"& _
Request.Form("strHemsida") & "', '" & Request.Form("strMeddelande") &"');"
objC.Execute strSQL, , 1
Set objC = Nothing
Response.Redirect "[i]visagästbok.asp[/i]" [blue]'skicka tillbaka användaren, så den får se vad den postat...[/blue]
%>
Det här är givetvis inte bara att smacka in och tro att det ska fungera, men det är en fingervisning om hur du kan gå till väga.
Hoppas det hjälper något iaf :)
Vilken är den rätta syntaxen?
detta som jag hittade hos webeye:
Response.Write "<table><tr><td>" & strNavigation & "</td></tr></table>"
Eller
Response.Write ("<p><b><font size=5><u><font color=#0000FF>Namn:</font></u></font></b></p>")
En fråga om tycke och smak.
Ja.
Japp.. eller egentligen inte. Det funkar likadant så bekymra dig inte.
Egentligen har man () när det är en funktion som returnerar någonting och utan när det är en sub, men man kan ha en sub med () fast då måste man göra en call
ex:
sString = MyFunction(iInParameter)
sString = MyFunction iInParameter
MySub iInParameter
call MySyb(iInParameter)
Alla dess 4 är giltiga sätt att ropa på functions eller subbar, men jag anser att man skall använda sig av () vid functioner och utan vid subbar. Smaken är docksom baken, alla har olika åsikter och i .NET är det tvingat har jag för mig att navända ().
Personligen kallar jag på en sub med den sistnämnda varianten. Just för att man då lätt ser att det är en sub som påkallas.
Vad det gäller response.write (mm iofs) använder jag inte () just pga att det är hyfsat vedertaget att inte göra det.
Hej,
här kommer kunskapstörstiga ja med ytterligare en fråga:
Finns det ngra skillnader och fördelar i att använda SQL-sats för att skriva till en databas istället för .AddNew och .Uppdate?