Hej!
Någon som kan förklara för mig varför nya inlägg inte lägger sig överst på förstasidan utan överst på andra sidan???
Tacksam för svar!
<!-- #include file="adovbs.inc" -->
<html>
<head><title>GBtitle>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<center>
<table width="300" cellspacing="3" cellpadding="0">
<tr>
<td align="left">
<form name="gb" action="add_post.asp" method="post">
<p>Namn:<br>
<input type="text" name="namn" size="30">
<br>
E-post:<br>
<input type="text" name="mail" size="30">
<br>
Hemsida:<br>
<input type="text" name="url" value="http://" size="30">
<br>
Skriv ditt inlägg:
<textarea rows="8" cols="40" name="inlagg" scrollbar="0"></textarea>
<br>
<input type="submit" value=" SKICKA ">
<br>
<br>
</p>
</form>
</td>
</tr>
<%
pg = Trim(Request("pg"))
if pg = "" Then pg = 1
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../../logs/gb.mdb")&";"
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "Select * From gb ORDER BY datum DESC"
RecSet.Open Addera, Conn, adOpenStatic, adLockOptimistic
RecSet.PageSize = 5
RecSet.AbsolutePage = pg
While Not RecSet.EOF and rowCount < RecSet.PageSize
rowCount = rowCount + 1
%>
<!-- Här är designen på varje inlägg som skrivs ut, ändra så de passar din sida !-->
<tr>
<td align="right">
<table width="300" bgcolor="#C8DC5D" cellspacing="0" cellpadding="5">
<tr>
<td bgcolor="#004B80" style="border : 1px solid Black;"> [<%=RecSet("datum")%>] - <a href="mailto:<%=RecSet("mail")%>"><%=RecSet("namn")%></a>
| <a href="delete.asp?id=<%=RecSet("id")%>">Radera</a> </td>
</tr>
<tr>
<td>
<font color="#000000"><%=RecSet("inlagg")%><br><br>
</td>
</tr>
<tr>
<td bgcolor="#004B80" style="border : 1px solid Black;"> Hemsida: <a href="<%=RecSet("url")%>" target="blanK"><%=RecSet("url")%></a>
</td>
</tr>
</table>
</td>
</tr>
<tr><td align="right"> </td></tr>
</table>
<br>
<%
RecSet.MoveNext
Wend
%>
<%
If RecSet.PageCount > 1 Then
For i = 1 to RecSet.PageCount
If i <> cINT(pg) Then
%>
<a href="gb.asp?pg=<%=i%>"><%=i%></a>
<% else %>
<b><%=i%></b>
<%
end if
next
end if
%>
//Stefan
SannyWMedlem sedan jan. 2003438 inlägg Jag är inte säker, men jag tror att det beror på:
if pg = "" Then pg = 1
testa med
if pg = "" Then pg = 0
hmm... nu får jag detta felmeddelandet:
ADODB.Recordset error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
/gb/gb.asp, line 56
SebbeMedlem sedan jan. 20032 285 inlägg Testa med att, till och börja med, strunta i att inkludera adovbs.inc i den fil. Sedan ändrar du raden
RecSet.Open Addera, Conn, adOpenStatic, adLockOptimistic
till
RecSet.Open Addera, Conn, 1, 3
har gjort det nu... men den skriver fortfarande på sida 2! :S
SebbeMedlem sedan jan. 20032 285 inlägg Har gjort om din kod lite grann. Det kan kanske hjälpa?
<html>
<head><title>GBtitle>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<center>
<table width="300" cellspacing="3" cellpadding="0">
<tr>
<td align="left">
<form name="gb" action="add_post.asp" method="post">
<p>Namn:<br>
<input type="text" name="namn" size="30">
<br>
E-post:<br>
<input type="text" name="mail" size="30">
<br>
Hemsida:<br>
<input type="text" name="url" value="http://" size="30">
<br>
Skriv ditt inlägg:
<textarea rows="8" cols="40" name="inlagg" scrollbar="0"></textarea>
<br>
<input type="submit" value=" SKICKA ">
<br>
<br>
</p>
</form>
</td>
</tr>
<%
intPage = Trim(CStr(Request.QueryString("pg")))
If intPage = "" Then
intPage = 1
Else
intPage = CInt(Request.QueryString("pg"))
End If
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../../logs/gb.mdb")
Set objRS = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM gb ORDER BY datum DESC"
objRS.Open strSQL, objConn, 1, 3
If NOT objRS.EOF Then
objRS.PageSize = 5
objRS.AbsolutePage = intPage
Do Until objRS.EOF OR intOn => objRS.PageSize
%>
<!-- Här är designen på varje inlägg som skrivs ut, ändra så de passar din sida !-->
<tr>
<td align="right">
<table width="300" bgcolor="#C8DC5D" cellspacing="0" cellpadding="5">
<tr>
<td bgcolor="#004B80" style="border : 1px solid Black;"> [<%=objRS("datum")%>] - <a href="mailto:<%=objRS("mail")%>"><%=objRS("namn")%></a>
| <a href="delete.asp?id=<%=objRS("id")%>">Radera</a> </td>
</tr>
<tr>
<td>
<font color="#000000"><%=objRS("inlagg")%><br><br>
</td>
</tr>
<tr>
<td bgcolor="#004B80" style="border : 1px solid Black;"> Hemsida: <a href="<%=objRS("url")%>" target="_blank"><%=objRS("url")%></a>
</td>
</tr>
</table>
</td>
</tr>
<tr><td align="right"> </td></tr>
</table>
<br>
<%
intOn = intOn + 1
objRS.MoveNext
Loop
If objRS.PageCount > 1 Then
For i = 1 To objRS.PageCount
If i <> intPage Then
Response.Write("<a href=""gb.asp?pg=" & i & """>" & i & "</a>")
Else
Response.Write("<b>" & i & "</b>")
End If
Next
End If
Else
Response.Write("Det finns inga gästboksinlägg!")
End If
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
SannyWMedlem sedan jan. 2003438 inlägg När jag testade din koden här ovan så funkar den perfekt. Frågan är vad add_post.asp gör med de nya inläggen.
Eller så formateras datumen felaktig på grund av felaktigt inställning i databasen.
Engine^Medlem sedan dec. 20003 887 inlägg Nu är det säkert jag som visar en smula okunskap, men ska det inte stå pg = Request.QueryString("pg")? eller antar Request att man menar ett querystringobjekt om man refererar ill det som du gjort?
Vad gäller PageSize, så är alltid första sidan = 1. Att ha med eller inte ha med adovbs.inc har ingen som helst betydelse, eftersom den endast definierar konstanter.
red. Vänta inte i tio minuter innan du postar ett svar... :l
Nu får jag detta felmeddelande...
ADODB.Recordset error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
/gb/gb.asp, line 48
på rad 48 finns detta:
objRS.Open strSQL, Conn, 1, 3
Jag antar att jag behöver ändra något i filen som skickar inläggen oxå...
add_post.asp:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=phat;Data Source=" & Server.MapPath("../../logs/gb.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "Select * From gb"
RecSet.Open Addera, Conn, adOpenStatic, adLockOptimistic
RecSet.AddNew
RecSet("namn") = Request.Form("namn")
RecSet("mail") = Request.Form("mail")
RecSet("datum") = Now
RecSet("inlagg") = Request.Form("inlagg")
RecSet("url") = Request.Form("url")
RecSet("ip") = Request.ServerVariables("remote_host")
RecSet.Update
RecSet.Close
Response.Redirect "gb.asp"
%>
SebbeMedlem sedan jan. 20032 285 inlägg Jag hade iofs redigerat mitt inlägg, men här kommer det igen!
gb.asp:
<html>
<head><title>GBtitle>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<center>
<table width="300" cellspacing="3" cellpadding="0">
<tr>
<td align="left">
<form name="gb" action="add_post.asp" method="post">
<p>Namn:<br>
<input type="text" name="namn" size="30">
<br>
E-post:<br>
<input type="text" name="mail" size="30">
<br>
Hemsida:<br>
<input type="text" name="url" value="http://" size="30">
<br>
Skriv ditt inlägg:
<textarea rows="8" cols="40" name="inlagg" scrollbar="0"></textarea>
<br>
<input type="submit" value=" SKICKA ">
<br>
<br>
</p>
</form>
</td>
</tr>
<%
intPage = Trim(CStr(Request.QueryString("pg")))
If intPage = "" Then
intPage = 1
Else
intPage = CInt(Request.QueryString("pg"))
End If
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../../logs/gb.mdb")
Set objRS = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM gb ORDER BY datum DESC"
objRS.Open strSQL, objConn, 1, 3
If NOT objRS.EOF Then
objRS.PageSize = 5
objRS.AbsolutePage = intPage
Do Until objRS.EOF OR intOn => objRS.PageSize
%>
<!-- Här är designen på varje inlägg som skrivs ut, ändra så de passar din sida !-->
<tr>
<td align="right">
<table width="300" bgcolor="#C8DC5D" cellspacing="0" cellpadding="5">
<tr>
<td bgcolor="#004B80" style="border : 1px solid Black;"> [<%=objRS("datum")%>] - <a href="mailto:<%=objRS("mail")%>"><%=objRS("namn")%></a>
| <a href="delete.asp?id=<%=objRS("id")%>">Radera</a> </td>
</tr>
<tr>
<td>
<font color="#000000"><%=objRS("inlagg")%><br><br>
</td>
</tr>
<tr>
<td bgcolor="#004B80" style="border : 1px solid Black;"> Hemsida: <a href="<%=objRS("url")%>" target="_blank"><%=objRS("url")%></a>
</td>
</tr>
</table>
</td>
</tr>
<tr><td align="right"> </td></tr>
</table>
<br>
<%
intOn = intOn + 1
objRS.MoveNext
Loop
If objRS.PageCount > 1 Then
For i = 1 To objRS.PageCount
If i <> intPage Then
Response.Write("<a href=""gb.asp?pg=" & i & """>" & i & "</a>")
Else
Response.Write("<b>" & i & "</b>")
End If
Next
End If
Else
Response.Write("Det finns inga gästboksinlägg!")
End If
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
add_post.asp skulle jag skriva såhär i:
<%
Function trimma(str)
str = Replace(str,"'","''")
trimma = str
End Function
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=phat;Data Source=" & Server.MapPath("../../logs/gb.mdb")
strSQL = "INSERT INTO gb (namn, mail, datum, inlagg, url, ip) VALUES ('" & trimma(Request.Form("namn")) & "', '" & trimma(Request.Form("mail")) & "', #" & Now() & "#, '" & trimma(Request.Form("inlagg")) & "', '" & trimma(Request.Form("url")) & "', '" & Request.ServerVariables("REMOTE_HOST") & "')"
objConn.Execute(strSQL)
objConn.Close
Set objConn = Nothing
Server.Transfer("gb.asp")
%>
SannyW skrev:
När jag testade din koden här ovan så funkar den perfekt. Frågan är vad add_post.asp gör med de nya inläggen.
Eller så formateras datumen felaktig på grund av felaktigt inställning i databasen.
okej.. vad add_post.asp gör kan du kolla ovan.. fältet datum har jag satt till just datum, är det fel???
:q
@ndersMedlem sedan juni 200032 969 inlägg
Engine^ skrev:
Nu är det säkert jag som visar en smula okunskap, men ska det inte stå pg = Request.QueryString("pg")? eller antar Request att man menar ett querystringobjekt om man refererar ill det som du gjort?
Du kan ange endast request om du antingen är för lat för att skriva .Querystring, eller om du inte vet varifrån du ska hämta värdet, om det kan komma från olika sidor / applikationer osv. ASP-tolken går igenom alla request-samlingar (form, querystring, servervariables, cookies), tills den hittar det du frågar efter.
Vet man varifrån värdet kommer är det givetvis alltid bättre att skriva ut .Querystring eller .Form.
dr. Snaggle skrev:
ADODB.Recordset error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
/gb/gb.asp, line 48
på rad 48 finns detta:
objRS.Open strSQL, Conn, 1, 3
Felmeddelandet brukar innebära att man ger parametrar, men har angett fel namn. Finns sql-frågan strSQL? Heter ditt connectionobjekt Conn? Annars: visa relevant kod.
(Jag skall på en gång understryka att jag endast läst de två senaste inläggen i tråden. :) )
Mvh,
SannyWMedlem sedan jan. 2003438 inlägg Jag ser inga problem och det funkar hos mig. Ändrade bara "RecSet.Open Addera, Conn, 3, 3". Annars så är det troligen fel på din databas, och att datumfältet är inställt på text istället för datum. ?
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=phat;Data Source=" & Server.MapPath("../../logs/gb.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "Select * From gb"
RecSet.Open Addera, Conn, 3, 3
RecSet.AddNew
RecSet("namn") = Request.Form("namn")
RecSet("mail") = Request.Form("mail")
RecSet("datum") = Now
RecSet("inlagg") = Request.Form("inlagg")
RecSet("url") = Request.Form("url")
RecSet("ip") = Request.ServerVariables("remote_host")
RecSet.Update
RecSet.Close
Response.Redirect "gb.asp"
%>
Engine^Medlem sedan dec. 20003 887 inlägg Testa använd
Set objRS = objConn.Execute("SELECT * FROM gb ORDER BY datum", , 1)
Ska sanningen fram, så förstår jag faktiskt inte felmeddelandet...
add_post.asp skulle jag skriva om till
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=phat;Data Source=" & Server.MapPath("../../logs/gb.mdb")
strSQL = "INSERT INTO gb (namn, mail, datum, inlagg, url, ip) VALUES ('"& Request.Form("namn") &"', '" & Request.Form("mail") & "', #" & _
Now & "#, '" & Request.Form("inlagg") & "', '" & Request.Form("url") & "', '" & _
Request.ServerVariables("REMOTE_HOST") & "')"
Conn.Execute strSQL, , 128
Response.Redirect "gb.asp"
red. Ändrade från update till insert, eftersom jag kom på att jag är bakis som en rackare... :)
Engine^Medlem sedan dec. 20003 887 inlägg
@nders skrev:
Du kan ange endast request om du antingen är för lat för att skriva .Querystring, eller om du inte vet varifrån du ska hämta värdet, om det kan komma från olika sidor / applikationer osv. ASP-tolken går igenom alla request-samlingar (form, querystring, servervariables, cookies), tills den hittar det du frågar efter.
Aha!
Det är alltså inte att rekommendera. Lathetsprogrammering straffar sig alltid ;)
SannyWMedlem sedan jan. 2003438 inlägg Såg inte ditt förra inlägg om datumen. Men testa med förändringen i add, för hos mig funkar det.
Sebbe: Okej :) jag såg inte det...
jag har ändrat till din kod nu, den funkar bra, förutom att den fortfarande skriver på sidan 2... kan det ha med ngn inställning i db:n??
SebbeMedlem sedan jan. 20032 285 inlägg Hur ser datumen i db:n ut?
Sebbe skrev:
Hur ser datumen i db:n ut?
så här: 3/31/2003 5:03:10 PM