webForumDet fria alternativet

pagin?

21 svar · 531 visningar · startad av dr. Snaggle

dr. SnaggleMedlem sedan jan. 200358 inlägg
#1

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&auml;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">&nbsp;</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>&nbsp;
<% else %>
<b><%=i%></b>&nbsp;
<%
end if
next
end if
%>

//Stefan

SannyWMedlem sedan jan. 2003438 inlägg
#2

Jag är inte säker, men jag tror att det beror på:

if pg = "" Then pg = 1

testa med

if pg = "" Then pg = 0

dr. SnaggleMedlem sedan jan. 200358 inlägg
#3

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

dr. SnaggleMedlem sedan jan. 200358 inlägg
#4

ingen som kan?

SebbeMedlem sedan jan. 20032 285 inlägg
#5

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
dr. SnaggleMedlem sedan jan. 200358 inlägg
#6

har gjort det nu... men den skriver fortfarande på sida 2! :S

SebbeMedlem sedan jan. 20032 285 inlägg
#7

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
#8

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
#9

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

dr. SnaggleMedlem sedan jan. 200358 inlägg
#10

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
#11

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")
%>
dr. SnaggleMedlem sedan jan. 200358 inlägg
#12

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
#13

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
#14

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
#15

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
#16

@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
#17

Såg inte ditt förra inlägg om datumen. Men testa med förändringen i add, för hos mig funkar det.

dr. SnaggleMedlem sedan jan. 200358 inlägg
#18

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
#19

Hur ser datumen i db:n ut?

dr. SnaggleMedlem sedan jan. 200358 inlägg
#20

Sebbe skrev:

Hur ser datumen i db:n ut?

så här: 3/31/2003 5:03:10 PM

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