[ASP]Aantal pagina's gastenboek

Pagina: 1
Acties:
  • 112 views sinds 30-01-2008
  • Reageer

  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 22:19

BlackBurn

One Ring To Rule Them All

Topicstarter
Ik ben bezig met een gastenboek, maar nu wil ik het zo hebben dat als er meer dan 10records in een database zitten er een link komt naar de volgende pagina. Ik dacht hier een leuke oplossing voor bedacht te hebben, maar hij schijnt niet te werken, ik krijg ook geen foutmelding :( Tjah, ik ben nog maar een n00b met asp.

Dit is de code in het begin van de pagina
code:
1
2
3
4
5
6
7
8
9
10
<%@LANGUAGE="VBSCRIPT"%>
<% 
Dim cnDB  
Set cnDB = Server.CreateObject("ADODB.Connection")
cnDB.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("./gasten.mdb")
cnDB.Open

Dim rsGasten 
Set rsGasten = cnDB.Execute("SELECT * FROM tblBerichten ORDER BY nummer DESC")
%>

Dit is de code waar het allemaal zou moeten gebeuren.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<% 
Dim intPage, intPages, intCounter
Dim intStart, intEnd
Dim strStart, strEnd
intPages= rsGasten.RecordCount/10
intPage= Request.QueryString("Page")

If intPage= "" Then
  intStart= 1 
  intEnd= 10
Else 
  StrStart= CStr(intPage)
  StrStart= StrStart+"0"
  intStart= CInt(StrStart)+1
  intEnd= intStart+9
End If

For intCounter= intStart To intEind
rsGasten.Move(intStart)
Response.Write "<table width=""75%"" border=""0"">" & VbCrLf 'De VbCrLF staat er alleen om de code in HTML overzichtelijk te houden
Response.Write "<tr>" & VbCrLf
Response.Write "<td width=""11%""><font face=""Arial, Helvetica, sans-serif"">Naam :</font></td>" & VbCrLf
Response.Write "<td width=""89%""><font face=""Arial, Helvetica, sans-serif"">"& rsGasten("Naam") & "</font></td>" & VbCrLf
Response.Write "</tr>" & VbCrLf
Response.Write "<tr>" & VbCrLf
Response.Write "<td width=""11%""><font face=""Arial, Helvetica, sans-serif"">E-mail :</font></td>" & VbCrLf
Response.Write "<td width=""89%""><font face=""Arial, Helvetica, sans-serif""><A HREF=""mailto:"& rsGasten("EMail")&""">"& rsGasten("Email")& "</A></font></td>" & VbCrLf
Response.Write "</tr>" & VbCrLf
Response.Write "<tr>" & VbCrLf
Response.Write "<td width=""11%""><font face=""Arial, Helvetica, sans-serif"">Homepage :</font></td>" & VbCrLf
Response.Write "<td width=""89%""><font face=""Arial, Helvetica, sans-serif""><A HREF="""& rsGasten("Homepage")&""" target=_Blank>"& rsGasten("Homepage")& "</A></font></td>" & VbCrLf
Response.Write "</tr>" & VbCrLf
Response.Write "<tr>" & VbCrLf
Response.Write "<td width=""11%"" valign=""top""><font face=""Arial, Helvetica, sans-serif"">Bericht :</font></td>" & VbCrLf
Response.Write "<td width=""89%""><font face=""Arial, Helvetica, sans-serif"">"& rsGasten("Bericht")& "</font></td>" & VbCrLf
Response.Write "</tr>" & VbCrLf
Response.Write "</table>" & VbCrLf
Response.Write "<BR>" & VbCrLf
Next 'intCounter
For intCounter = 0 to intPages
  If intcounter<> 0 Then
    Response.Write "<A HREF=""./temp2.asp?page="&CStr(intCounter)&""">"&Cstr(intCounter) &"</A>"
  End If
Next  

%>

Ohja, de reden waarom ik er elke keer Respons.Write voor heb gegooid is dat het op een gegeven moment een rommeltje was met die klote " tekens.

Het zal wel een domme fout zijn, maar ik kijk er waarschijnlijk overheen |:(

Ohja, natuurlijk worden de connectie en de recordset netjes geclosed :P

Edit: Typo

If it is broken, fix it. If it ain't broken, make it better!


  • Mart!
  • Registratie: Februari 2000
  • Laatst online: 06-09 18:02
Paar tips:
Gebruik voor het door een recordset lopen
code:
1
2
3
4
while not rs.eof
  [doeIets]
  rs.movenext
wend

Ik zou een select doen op de pagina met
SELECT TOP 10 * FROM table WHERE ID > laatsteRecVorigePagina
Op 1e pagina is laatsteRecVorigePagina = 0
Dan selecteer je niet alle records (stel dat je gastenboek populair wordt en je hebt 1000+ records -> traag)

met een
SELECT count( * ) FROM Table
kun je het totaal aantal recs uit de db halen en er paginalinks van maken

  • Wally-S
  • Registratie: September 2001
  • Laatst online: 04-09 18:53

Wally-S

-Snowboarding is art-

Hier staat al iets waar je wat aan hebt denk ik.

[topic=285897/1/25]

Snow is only frozen water


  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 22:19

BlackBurn

One Ring To Rule Them All

Topicstarter
Bedankt voor die link, maar ik heb het even snel doorgelezen en het bleek om PHP te gaan, maar ik ga het proberen met de manier die hier boven is genoemd :)

If it is broken, fix it. If it ain't broken, make it better!


  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 22:19

BlackBurn

One Ring To Rule Them All

Topicstarter
Misschien een hele domme vraag, maar ik heb het nu werkend met die SELECT TOP manier, op 1 klein dingetje na, nu wil ik links onderin maken, om naar de volgende pagina etc. te gaan, maar het probleem is nu, hoe krijg ik het aantal records in een integer? Er werd verteld met SELECT COUNT( * ) FROM table, maar als ik dit zou doen kan het bij mijn weten alleen op deze manier.
code:
1
2
Dim rsTmp
Set rsTmp= cnDB.Execute("SELECT COUNT(*) FROM tblGasten")

Maar hoe krijg ik dan uit die recordset het aantal? Ik kan niet zeggen.

intTotal= rsTmp

Althans ik kan het wel zeggen, maar dan staat het getal nog niet als integer in intTotal.

Ik heb het ook al geprobeerd met RecordCount, maar deze geeft de waarde -1 of te wel ADO kan niet zien hoeveel records ik heb in mijn table.

edit: Formulering was beetje krom

If it is broken, fix it. If it ain't broken, make it better!


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 16:14

Crazy D

I think we should take a look.

Op maandag 15 oktober 2001 19:16 schreef BlackBurn het volgende:
code:
1
2
Dim rsTmp
Set rsTmp= cnDB.Execute("SELECT COUNT(*) FROM tblGasten")

Maar hoe krijg ik dan uit die recordset het aantal? Ik kan niet zeggen.

intTotal= rsTmp
intTotal= rsTmp(0)
of
SELECT COUNT(*D AS Aantal FROM tabelletje
en dan
intTotal= rsTmp("Aantal")
Ik heb het ook al geprobeerd met RecordCount, maar deze geeft de waarde -1 of te wel ADO kan niet zien hoeveel records ik heb in mijn table.
Moet je de cursorlocation property op adUseClient zetten. Alleen die constante kent ie niet default, moet je ff de adovbs.inc (dacht ik) includen (die is hier al tig keer gepost, en ik heb ff geen zin om te zoeken). Ik dacht trouwens uit m'n hoofd dat de waarde 2 of 3 was voor die constante.
Krijg je alleen nog het gemekker dat je (volgens velen, al heb ik daar zelf nog geen problemen mee gehad) eerst ff MoveLast en dan MoveFirst moet doen, anders (zeggen ze) is de recordcount niet betrouwbaar.
edit: Formulering was beetje krom
Nog krommer? :P :+

[edit]
je zou trouwens ook ff in je favoriete ADO reference guide kunnen kijken naar (uh uit m'n hoofd, mis intellisence van Interdev een beetje hier ;) CurrentPage (? Activepage), PageCount, PageSize properties van de recordset. Kun je instellen bv 10 records op 1 page. Bekijkt hij zelf hoeveel pagina's je dan krijgt, en met die currentpage (of activepage or whatever) kun je dan direct naar die pagina toespringen. Maja komt op zich wel een beetje op hetzelfde neer als wat je nu doet.

Exact expert nodig?


  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 22:19

BlackBurn

One Ring To Rule Them All

Topicstarter
Het werkt nu, dus het is goed :)

Voor de volgende keer zal ik daar eens naar kijken ;)

If it is broken, fix it. If it ain't broken, make it better!


Verwijderd

hey, ik heb het hele verhaal hier boven eens ff doorgelezen, maar ik kon er niet uit, ik zal mijn code hier onder eens neerzetten, ik ben dus ook met een gastenboek bezig. Ik heb nog niet veel ervaring met ASP maar dit gaat met tever. Kan iemand me een tip geven hoe ik de bovenstaande code kan verwerken in mijn script? Ik wil ongeveer 10 berichten op een pagina laten zien. Bedankt.
-----------------------------------------------------------

<!--#include virtual ="/global.inc"-->
<HTML>
<HEAD>
<link rel= "stylesheet" type="text/css" href="../css/midden.css">
</HEAD>
<!-- \aspsql\klant.asp -->
<BODY>


<%
dim myconnection
dim myrecordset

set myconnection = server.createobject ("ADODB.connection")
set myrecordset = server.createobject ("ADODB.recordset")

dim mysqlstatement
mysqlstatement= "SELECT * From user, gastenboek where (user.usernummer = gastenboek.usernummer) ORDER BY datum DESC"

call myconnection.open( _
"DRIVER={Microsoft Access Driver (*.mdb)};" & _
"DBQ=" & DB_FILE)
call myrecordset.open (mysqlstatement, myconnection)

call myrecordset.movefirst ()
%>





<CENTER>
<TABLE BORDER="0" width="20">
<%
Call myrecordset.movefirst ()
While not myrecordset.EOF
%>


<tr>
<td COLSPAN="4">
<HR COLOR ="#B2DAFE" SIZE="2" ALIGN="Left" width="600">
</td>
</tr>

<tr>

<td>
<font><B>Naam:</B></font>
</TD>

<TD>
<font><%=Myrecordset("usernaam")%> </font>
</td>


<td>
<font><B>E-mail adres: </B></font>
</TD>
<TD>
<font><A HREF="mailto:<%=Myrecordset("email")%>"><%=Myrecordset("email")%></a> </font>
</td>
</tr>
<tr>

<td>
<font><B>Bericht: </font></B>
</TD>
</TR>
<TR>
<TD colspan="4" rowspan="4" valign="top">
<font><%=Myrecordset("bericht")%> </font>
</td>

<tr><td> </td></tr>
<tr><td> </td></tr>
<tr><td> </td></tr>
</tr>
<tr>

<td>
<font><B>datum:</font></B>
</TD>

<TD>
<font><%=Myrecordset("datum")%> </font>
</td>


<td>
<font><B>Tijd </font></B>
</TD>
<TD>
<font><%=Myrecordset("tijd")%> </font>
</td>
</tr>
<tr>

<%
Call Myrecordset.movenext ()
Wend
%>
<tr>
<td COLSPAN="4">
<HR COLOR ="#B2DAFE" SIZE="2" ALIGN="Left" width="600">
</td>
</tr>

</table>
</CENTER>
<%
Myrecordset.close
Myconnection.close
%>
</body>
</html>

-----------------------------------------------------------
Al vast bedankt!

  • Wally-S
  • Registratie: September 2001
  • Laatst online: 04-09 18:53

Wally-S

-Snowboarding is art-

Ik ga je geen complete code geven, zelf kloten is ook goed, daar leer je het meeste van :)

maargoed, kijk maar
Op zondag 05 mei 2002 12:36 schreef Remco292 het volgende:



call myrecordset.movefirst ()
inplaats "movefirst()" kan je ook gebruiken move 10.
Dat betekend dat hij naar het tiende record uit de query gaat.
Je zou iets kunnen krijgen van:
code:
1
myrecordset.move (pagenumber-1)*10

Dit zorgt ervoor dat hij op pagina 2 bij record 10 begint. En bij pagina 5 bij record 40.
While not myrecordset.EOF
Hier moet je ook nog een voorwaarde bij zetten zodat hij na 10 posts per pagina stopt.
dus iets van:
code:
1
While not (myrecordset.EOF OR recordnummer=10)

Recordnummer is een zelfverzonnen variabele.
<%
Call Myrecordset.movenext ()
Wend
%>
Dit kan wel zo blijven

je moet nu dan alleen nog een link hebben naar de volgende pagina.
dit kan zoiets zijn:
code:
1
<A HREF="bla.asp?page=<%=pagenumber+1%>">

Bovenin de code moet je dan met
code:
1
pagenumber=trim(Request("page"))

Het pagenumber uit de variabele halen zodat je query weet waar hij moet gaan zoeken.

succes

Snow is only frozen water


Verwijderd

Thanks,

Dit is iets waarmee ik verder kan, ik vindt het ook het leukst een beetje zelf te klooien, maar ja als je geen idee hebt wordt het al moeilijk!! bedankt

bij dat
myrecordset.move (pagenumber-1)*10
moet daar nog CALL voor? En moet ik die bij allebei vervangen? Hij geeft namelijk de volgende foutmelding.
--------------------------------------------------------
Expected end of statement

/poolmate/html/toongastenboek1.asp, line 26

call myrecordset.move (pagenumber-1)10
------------------------------------^
--------------------------------------------------------

Ik ben al zolang aan het kloten hiermee, niet alleen met deze hoor, ik heb nog andere codes ook geprobeerd. Wordt er zo moe van. HEt is voor school, maar ja, daar leggen ze het ook niet uit..zucht

  • Wally-S
  • Registratie: September 2001
  • Laatst online: 04-09 18:53

Wally-S

-Snowboarding is art-

Op zondag 05 mei 2002 13:36 schreef Remco292 het volgende:
Thanks,
bij dat
myrecordset.move (pagenumber-1)*10
moet daar nog CALL voor? En moet ik die bij allebei vervangen? Hij geeft namelijk de volgende foutmelding.
Ik gebruik zowiezo nooit call:
code:
1
2
qrypost.Move intpage*intpostsonpages
do until qrypost.EOF OR postnumber=intpostsonpages

dit gebruik ik altijd.
Mischien dat het bij jou niet werkt door de -1.
Ik heb een paar regels erboven de variabele al met 1 verminderd.

Snow is only frozen water


Verwijderd

Nou snap ik er helemaal niets meer van, is er geen goede Nederlandse website die hier duidelijk uitleg over geeft? Dan kan ik het uitzoeken, ik snap echt niet wat je bedoelt. Toch bedankt!

  • Wally-S
  • Registratie: September 2001
  • Laatst online: 04-09 18:53

Wally-S

-Snowboarding is art-

Tja, misschien moet je dan voor je verder gaat eerst effe op http://www.w3schools.com/asp kijken.

En verder kan je natuurlijk zelf ook op google zoeken naar zo'n site.
bijv:
zoeken naar ASP database next 10
Dan zie je bij de 2e link een site met allemaal samples, effe zoeken en je vind zo: http://www.asp101.com/samples/db_paging.asp
met het antwoord op jou vraag.

Snow is only frozen water


  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 22:19

BlackBurn

One Ring To Rule Them All

Topicstarter
Op zondag 05 mei 2002 15:54 schreef Remco292 het volgende:
Nou snap ik er helemaal niets meer van, is er geen goede Nederlandse website die hier duidelijk uitleg over geeft? Dan kan ik het uitzoeken, ik snap echt niet wat je bedoelt. Toch bedankt!
HeHe, wel lachen om je bericht omhoog geschopt zien te worden :) Maar goed, ik wil je het gastenboek wel sturen, als je intresse hebt en er wat uitleg bij geven.
Ik heb het geloof ik nog wel ergens liggen, je kunt me ook contacten op icq als je wilt.

We zijn immers allemaal ooit begonnen he :7

If it is broken, fix it. If it ain't broken, make it better!


Verwijderd

hey

ja als je het kan mailen graag. Ik moet het ff zien werken, dan snap ik het meestal wel. Die site van hierboven is ook wel goed, maar ook hier zijn ze een beetje onduidelijk. mail hem maar naar

remco-rvb@zonnet.nl

bedankt
Pagina: 1