Avatar billede fld Nybegynder
27. juni 2005 - 14:31 Der er 31 kommentarer og
1 løsning

Max antal indlæg pr. side.?

Jeg fået tilpasset min gæstebog: http://digitalife.dk/gaestebog.asp

Jeg kunne godt tænke mig hvis jeg kunne sætte et max på hvor mange indlæg der skal vises pr. side. Altså sådan så at når der er lagt f. eks 5 indlæg at der så kommer en ny side. Nogen som kan hjælpe med det.?
Avatar billede thesurfer Nybegynder
27. juni 2005 - 14:35 #1
Avatar billede thesurfer Nybegynder
27. juni 2005 - 14:35 #2
PS: det hedder "paging"..

/theSurfer
Avatar billede fld Nybegynder
27. juni 2005 - 14:41 #3
Puha.!!

Skal alt dette sættes inde i min kode, for så kan jeg ligeså godt stoppe her.!:

<%
Session.LCID = 1030

Const adOpenKeyset = 1
Const adLockOptimistic = 3

strMode = Request.QueryString("mode")
tempConn = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("test/jaja.mdb") & ";UID=admin;PWD=;"

IP = Request.ServerVariables("REMOTE_ADDR")
FIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")

If ((FIP <> "") And (FIP <> "unknown")) Then
    IP = FIP
End If

If Request.Form("Gem") <> "" Then
    strError = ""
    strNavn = Trim(Request.Form("Navn"))
    strEmail = Trim(Request.Form("Email"))
    strOverskrift = Trim(Request.Form("Overskrift"))
    strKommentar = Trim(Request.Form("Kommentar"))

    If Len(strNavn) = 0 Then
        strError = "<li>Du skal skrive dit navn!</li>"
    ElseIf validateEmail(strEmail) = False Then
        strError = "<li>Du skal skrive en gyldig e-mail adresse!</li>"
    ElseIf Len(strKommentar) = 0 Then
        strError = "<li>Du skal skrive en kommentar!</li>"
    End If

    If Len(strError) = 0 Then
        Set rs = Server.CreateObject("ADODB.RecordSet")
        strSQL = "SELECT * FROM Guestbook WHERE (ID = 0)"

        rs.Open strSQL, tempConn, adOpenKeyset, adLockOptimistic
        If (rs.BOF Or rs.EOF) Then
            rs.AddNew
            rs("Navn") = Server.HTMLEncode(strNavn)
            rs("Email") = Server.HTMLEncode(strEmail)
            rs("Overskrift") = Server.HTMLEncode(strOverskrift)
            rs("Kommentar") = Server.HTMLEncode(strKommentar)
            rs("Dato") = Now()
            rs("IP") = IP
            rs.Update
        End If
        rs.Close
        Set rs = Nothing

        Response.Redirect("gaestebog.asp")
    Else
        strError = "<font color=#FF0000>" & strError & "</font>"
        strMode = "add"
    End If
End If
%>
Avatar billede thesurfer Nybegynder
27. juni 2005 - 15:04 #4
Så vidt jeg kan se, er den kode ud lige har smidt ind, noget der gemmer i en database..

Paging henter data fra en database..

Det nemmeste ville være, hvis du havde 2 filer: gem.asp og hent.asp
Så kan du putte gem-koden i gem.asp, og paging-koden i hent.asp

Så skal du sådan set bare kopier paging-koden, og indsætte den direkte i hent.asp..

/theSurfer
Avatar billede fld Nybegynder
27. juni 2005 - 15:15 #5
Hvad skal jeg så gøre med hent.asp.?
Avatar billede fld Nybegynder
27. juni 2005 - 15:17 #6
Du kan se hele min .asp og .inc her: http://www.eksperten.dk/spm/628642
Avatar billede thesurfer Nybegynder
27. juni 2005 - 15:27 #7
1) Læs lige 27/06-2005 15:04:14 igen.. du skal bruge 2 filer, eller en IF-THEN-ELSE sætning, hvilket gør det lidt mere uoverskueligt..

2) Du skriver "Jeg har ikke løst det, men fundet noget som jeg kan leve med.!", så hvordan ser din kode ud?

3) Når man finder en løsning, skal den offentliggøres jvf Ekspertens regel §2.7 (hvis spm'et omhandler points). Ekspertens regler: http://www.eksperten.dk/regler.phtml

/theSurfer
Avatar billede fld Nybegynder
27. juni 2005 - 15:51 #8
Det eneste jeg ændrede var min .inc til dette min .asp har jeg ikke pillet ved:

<div id="indhold">

<h1 style="margin-bottom:0px"><%Response.Write strTitle%></h1>

<%
Select Case strMode
Case "add"
IP = Request.ServerVariables("REMOTE_ADDR")
FIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")

if ((FIP <> "") and (FIP <> "unknown")) then
    IP = FIP
end if
%>



<%
Case Else
strAddLine = ""
Response.Write strAddLine
strSQL = "SELECT * FROM Guestbook ORDER BY Dato DESC;"
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open tempConn
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then

Do While Not rs.EOF
dtmDato = rs("Dato")
dtmDato = FormatDateTime(dtmDato,vbLongDate) & " kl. " & FormatDateTime(dtmDato,vbLongTime)
Response.Write "<div style='border: solid 1px #fff;padding: 5px'>Den " & dtmDato & " skrev "
If Len(rs("Email")) > 0 Then
Response.Write "<a class='tlink' href='mailto:" & rs("Email") & "'>" & rs("Navn") & "</a><br />"
End If
Response.Write "<span class='overskrift5'><hr SIZE=1 NOSHADE color=gray>" & rs("Overskrift") & "</hr></span><hr WIDTH=50% SIZE=1 ALIGN=left NOSHADE color=gray></hr>"
strContent= replace(rs("Kommentar") & "",VbCrLf,"<br />")
Response.Write strContent & "</div><br />"
rs.MoveNext
Loop

Else
Response.Write "<p class='fejl'>Der er endnu ikke nogen, der har skrevet i gæstebogen</p>"
End If
    myConn.Close
    Set myConn = Nothing
    Response.Write strAddLine
End Select
%>
Avatar billede fld Nybegynder
27. juni 2005 - 15:54 #9
Jo men hvad skal jeg gøre med de to filer.? Lige nu har jeg min gaestebog.asp og gastebog.inc
Avatar billede thesurfer Nybegynder
27. juni 2005 - 16:27 #10
1) Brug aldrig ".inc" filer.. De kan læses som almindelige tekst.. omdøb dem alle til ".asp" filer.. og ændre alle henvisningerne.

2) Indeholder gaestebog.asp både gem-koden OG hent-koden? (hent = vis)
Hvis ja, må den jo være delt op, og du har en switch ("Select Case strMode").
I den del, strMode = "add", indsætter du gem-koden. I den anden del, indsætter du hent-koden (som er paging-koden).

/theSurfer
Avatar billede fld Nybegynder
27. juni 2005 - 16:42 #11
thesurfer, hvis nu man kan finde ud af sammenhængen i .ASP så er det sikkert nemt nok det du skriver.! Men jeg fatter NADA af det du skriver, desvære.! :^(
Avatar billede thesurfer Nybegynder
27. juni 2005 - 17:01 #12
Jeg vil prøve på at lave et komplet eksempel, der kan erstatte din kode, i løbet af et par dage.. kommer an på arbejdet in real life..

/theSurfer
Avatar billede fld Nybegynder
27. juni 2005 - 17:04 #13
Det lyder ski godt.!!
Avatar billede thesurfer Nybegynder
29. juni 2005 - 00:25 #14
Jeg har lige kigger på det.. og det er meget simpelt..

1) vælg antallet af poster per side her: rs.PageSize = 10

2) Indsæt din løkke-kode (altså koden imellem "Do While Not ..." og "Loop", ind hvor det passer.. så ser det sådan ud:

  Do While Not rs.EOF And intRecCount > 0

        dtmDato = rs("Dato")
        dtmDato = FormatDateTime(dtmDato,vbLongDate) & " kl. " & FormatDateTime(dtmDato,vbLongTime)
        Response.Write "<div style='border: solid 1px #fff;padding: 5px'>Den " & dtmDato & " skrev "
        If Len(rs("Email")) > 0 Then
        Response.Write "<a class='tlink' href='mailto:" & rs("Email") & "'>" & rs("Navn") & "</a><br />"
        End If
        Response.Write "<span class='overskrift5'><hr SIZE=1 NOSHADE color=gray>" & rs("Overskrift") & "</hr></span><hr WIDTH=50% SIZE=1 ALIGN=left NOSHADE color=gray></hr>"
        strContent= replace(rs("Kommentar") & "",VbCrLf,"<br />")
        Response.Write strContent & "</div><br />"
       
  intRecCount = intRecCount - 1
  rs.MoveNext
  Loop

3) Husk at rette stien til database, og navnet på din tabel..

Mere er der ikke i det..

/theSurfer
Avatar billede fld Nybegynder
29. juni 2005 - 01:07 #15
hejsa, nu er det jo så jeg IKKE vil ha en .INC fil, men hvis jeg omdøber den samt stien i <!--#include file="/.asp"-->

Så kommer den op med en boks hvor jeg skal skrive en kode, hvorfor sker det.?
Avatar billede fld Nybegynder
29. juni 2005 - 02:06 #16
Jeg har løst det andet.!

Jeg går ud fra det skal se sådan ud: Men hvad skal jeg gøre ved det.? Hvis jeg sætter det hele ind i min tidligere .INC fil får jeg fejl: Microsoft VBScript compilation  error '800a03f6'
Expected 'End'
/gb.asp, line 141




<%
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
  intPage = 1
End If

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT LinkURL FROM Links"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("jaja.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
  rs.PageSize = 10
  rs.AbsolutePage = intPage
  intRecCount = rs.PageSize
  intPageCount = rs.PageCount
  Response.Write "<p><b>Side " & intPage & " af " & intPageCount & "</b></p>"
  Do While Not rs.EOF And intRecCount > 0

        dtmDato = rs("Dato")
        dtmDato = FormatDateTime(dtmDato,vbLongDate) & " kl. " & FormatDateTime(dtmDato,vbLongTime)
        Response.Write "<div style='border: solid 1px #fff;padding: 5px'>Den " & dtmDato & " skrev "
        If Len(rs("Email")) > 0 Then
        Response.Write "<a class='tlink' href='mailto:" & rs("Email") & "'>" & rs("Navn") & "</a><br />"
        End If
        Response.Write "<span class='overskrift5'><hr SIZE=1 NOSHADE color=gray>" & rs("Overskrift") & "</hr></span><hr WIDTH=50% SIZE=1 ALIGN=left NOSHADE color=gray></hr>"
        strContent= replace(rs("Kommentar") & "",VbCrLf,"<br />")
        Response.Write strContent & "</div><br />"
       
  intRecCount = intRecCount - 1
  rs.MoveNext
  Loop
End If
rs.Close
Set rs = Nothing

Response.Write "<p>Gå til side "
For intNum = 1 To intPageCount
  Response.Write "<a href=gb.asp?page=" & intNum & ">" & intNum & "</a> "
Next

Response.Write "<p>"
If Clng(intPage) > 1 Then
  Response.Write "<a href=gb.asp?page=" & intPage - 1 & ">&lt;&lt;</a>"
Else
  Response.Write "&lt;&lt;"
End If

Response.Write "&nbsp;"

If Clng(intPage) < Clng(intPageCount) Then
  Response.Write "<a href=gb.asp?page=" & intPage + 1 & ">&gt;&gt;</a> "
Else
  Response.Write "&gt;&gt;"
End If
%>






Jeg har sat koden ind så det ser sådan ud:

<div id="indhold">

<h1 style="margin-bottom:0px"><%Response.Write strTitle%></h1>

<%
Select Case strMode
Case "add"
IP = Request.ServerVariables("REMOTE_ADDR")
FIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")

if ((FIP <> "") and (FIP <> "unknown")) then
    IP = FIP
end if
%>



<%
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
  intPage = 1
End If

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT LinkURL FROM Links"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("jaja.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
  rs.PageSize = 10
  rs.AbsolutePage = intPage
  intRecCount = rs.PageSize
  intPageCount = rs.PageCount
  Response.Write "<p><b>Side " & intPage & " af " & intPageCount & "</b></p>"
  Do While Not rs.EOF And intRecCount > 0

        dtmDato = rs("Dato")
        dtmDato = FormatDateTime(dtmDato,vbLongDate) & " kl. " & FormatDateTime(dtmDato,vbLongTime)
        Response.Write "<div style='border: solid 1px #fff;padding: 5px'>Den " & dtmDato & " skrev "
        If Len(rs("Email")) > 0 Then
        Response.Write "<a class='tlink' href='mailto:" & rs("Email") & "'>" & rs("Navn") & "</a><br />"
        End If
        Response.Write "<span class='overskrift5'><hr SIZE=1 NOSHADE color=gray>" & rs("Overskrift") & "</hr></span><hr WIDTH=50% SIZE=1 ALIGN=left NOSHADE color=gray></hr>"
        strContent= replace(rs("Kommentar") & "",VbCrLf,"<br />")
        Response.Write strContent & "</div><br />"
       
  intRecCount = intRecCount - 1
  rs.MoveNext
  Loop
End If
rs.Close
Set rs = Nothing

Response.Write "<p>Gå til side "
For intNum = 1 To intPageCount
  Response.Write "<a href=gb.asp?page=" & intNum & ">" & intNum & "</a> "
Next

Response.Write "<p>"
If Clng(intPage) > 1 Then
  Response.Write "<a href=gb.asp?page=" & intPage - 1 & ">&lt;&lt;</a>"
Else
  Response.Write "&lt;&lt;"
End If

Response.Write "&nbsp;"

If Clng(intPage) < Clng(intPageCount) Then
  Response.Write "<a href=gb.asp?page=" & intPage + 1 & ">&gt;&gt;</a> "
Else
  Response.Write "&gt;&gt;"
End If
%>
Avatar billede fld Nybegynder
29. juni 2005 - 02:12 #17
og min gæstebog er blevet til http://www.digitalife.dk/gb.asp
Avatar billede thesurfer Nybegynder
29. juni 2005 - 11:13 #18
Se fejlmeddelelsen:

Microsoft VBScript compilation  error '800a03f6'
Expected 'End'
/gb.asp, line 141

Hvad står der på linie 141 ?

/theSurfer
Avatar billede thesurfer Nybegynder
29. juni 2005 - 11:15 #19
Hvis du test om det virker på http://www.digitalife.dk/gb.asp skal du sætte "rs.PageSize = 10" til at være mindre end antallet af indlæg.

Jeg kan se at du har 8 indlæg, i databasen.. prøv: rs.PageSize = 4

Hvis du sætter den til 4, skulle der gerne være 2 sider.

/theSurfer
Avatar billede fld Nybegynder
29. juni 2005 - 11:19 #20
Kommentar: thesurfer
29/06-2005 11:13:00

Der står: End Function

Jeg har sat rs.PageSize = til f. eks 5

Men er det rigtigt som jeg har sat koden ind.?
Avatar billede thesurfer Nybegynder
29. juni 2005 - 11:41 #21
Jeg glemte noget i 29/06-2005 00:25:30:

4) Ret din sql sætning, så den passer: strSQL = "SELECT * from Guestbook"
Evt: strSQL = "SELECT * from Guestbook order by dato" ' sortering efter dato

Jeg kan ikke se nogen funktion.. hvis du har en funktion, skal jeg se den, før jeg lige kan se, hvordan det rettes..

Men jeg til tro, at du mangler en "End If".. men så ville den vel skrive "if without end if" (eller noget i den stil..

/theSurfer
Avatar billede thesurfer Nybegynder
29. juni 2005 - 12:05 #22
Dit paging script virker stadig ikke..

/theSurfer
Avatar billede fld Nybegynder
29. juni 2005 - 12:13 #23
Hey theSurfer, jeg er lige optaget, håber det er okay :^(
Avatar billede thesurfer Nybegynder
29. juni 2005 - 12:21 #24
helt iorden.. jeg smutter også lige om lidt.. er nok først tilbage i morgen..

/theSurfer
Avatar billede fld Nybegynder
29. juni 2005 - 23:14 #25
Feeedt.! Nu virker det sq.! Mange tak for hjælpen.!!
Avatar billede fld Nybegynder
29. juni 2005 - 23:41 #26
Ja undskyld, men kan man indsætte en stykke kode så den hopper til den sidste side så man kan se hvad der er blevet skrevet.?
Avatar billede thesurfer Nybegynder
30. juni 2005 - 00:59 #27
Det må så være:

Response.Write "Gå til <a href=gb.asp?page=" & intPageCount & ">sidste side</a>"

/theSurfer
Avatar billede fld Nybegynder
30. juni 2005 - 01:08 #28
Jeg SKAL ha lært ASP.!! Hvor skal Response.Write "Gå til <a href=gb.asp?page=" & intPageCount & ">sidste side</a>"

sættes ind ;-(
Avatar billede fld Nybegynder
30. juni 2005 - 01:11 #29
Det er sådan så at efter man har trykket på send, at den så selv hopper til sidste side, eller ned til beskeden.!?
Avatar billede thesurfer Nybegynder
30. juni 2005 - 01:47 #30
1) At lære ASP:
Læs disse lektioner (alle lektionerne): http://www.html.dk/tutorials/asp/


2) At hoppe til sidste side:
Du må ha' en strSQL = "insert ...." sætning, et eller andet sted..
efter du har afviklet den (conn.execute(strSQL), bruger du bare:

strSQL = "SELECT * from Guestbook"
set rs = conn.execute(strSQL)

if not (rs.bof or rs.eof) then
  rs.PageSize = 5
  sidste = rs.PageCount
end if

rs.close
set rs = nothing

conn.close
set conn = nothing

response.redirect "gb.asp?page=" & sidste

Jeg vil mene, at det eneste du behøver, for at finde den sidste side, er:

  rs.PageSize = 5
  sidste = rs.PageCount

Du har vist indstillet den, til at vise 5 poster per side..


3) At hoppe til nyeste indlæg:
Der skal du bruge <a name="..."> og "#..." i urlen.

Få din kode, til at se sådan ud:

dim sidste ' dette er en ny linie.. ny variabel ("sidste").. indsættes ved dtmDato i Response.Write-linien
Do While Not rs.EOF And intRecCount > 0
if rs.eof then sidste = "<a name='sidste'>"

        dtmDato = rs("Dato")
        dtmDato = FormatDateTime(dtmDato,vbLongDate) & " kl. " & FormatDateTime(dtmDato,vbLongTime)
        Response.Write "<div style='border: solid 1px #fff;padding: 5px'>" & sidste & "Den " & dtmDato & " skrev "
        If Len(rs("Email")) > 0 Then
        Response.Write "<a class='tlink' href='mailto:" & rs("Email") & "'>" & rs("Navn") & "</a><br />"
        End If
        Response.Write "<span class='overskrift5'><hr SIZE=1 NOSHADE color=gray>" & rs("Overskrift") & "</hr></span><hr WIDTH=50% SIZE=1 ALIGN=left NOSHADE color=gray></hr>"
        strContent= replace(rs("Kommentar") & "",VbCrLf,"<br />")
        Response.Write strContent & "</div><br />"
       
  intRecCount = intRecCount - 1
  rs.MoveNext
  Loop

    og (se punkt 2):

    response.redirect "gb.asp?page=" & sidste & "#sidste"

/theSurfer
Avatar billede fld Nybegynder
30. juni 2005 - 17:04 #31
Hejsa, alt det du har skrevet ovenover- skal det skrives ind i min paging fil. for det kan jeg ikke liiige finde rund i. Men jeg skal ikke ta mere af din tid ;^) Jeg må se om jeg kan få det her lært, selv om det forkommer mig RET ulogisk :^(
Avatar billede thesurfer Nybegynder
01. juli 2005 - 01:55 #32
"Få din kode, til at se sådan ud:" = Gør hvad du skal gøre, for at din kode ligner min..

Dvs: slet, ret, tilføj hvad end der skal til..

Jeg kan ikke se det ulogiske i det.. hvad mener du? :-)

/theSurfer
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester