Accueil   |   Forums   |  Offres d'emplois   |  Contact    |   Mon compte   
vendredi 16 mai 2008 Rechercher :
Déposez votre CV gratuitement sur touslesemplois
 
comparer les prix
» Logiciels
» Jeux vidéos
» Matériel Informatique


» ASP.NET
» ASP
» SQL
» PHP
» JAVASCRIPT
» XML
 


» ACTUALITÉ / DIVERS
» DROIT DE L'INTERNET
» INFOS VIRUS
» PATCHS MICROSOFT
» SÉCURITÉ
» BASES DE DONNÉES
» DOWNLOAD .NET
» LOGITHÈQUE
» SERVICES WEB
» Y SONT FOUS !
» .NET
» ASP
» ASP.NET
» JAVA
» PHP
» XML
» LANGAGE C#
» LANGAGE VB.NET
» UNIX / LINUX
» WINDOWS
» EVÈNEMENTS
» GASP
» MICROSOFT
 



Vous êtes ici : Articles ASP > NOTES DE COURS

Paginer les données issues d'une table
La pagination a un intérêt dans le cas ou les données à afficher sont nombreuses. Elle vous permet de ne pas faire patienter le visiteur trop longtemps, tout en présentant les données (par page) d'une manière claire.


ABONNEZ-VOUS GRATUITEMENT A LA REVUE DE PRESSE "LES Z'ACTUS" ET RECEVEZ CHAQUE JOUR DANS VOTRE BOITE AUX LETTRES LA MEILLEURE INFORMATION DEDIEE AUX WEBMASTERS / DEVELOPPEURS.

Indiquez votre adresse E-mail :

Technologie : ASP 
Date : 28/05/2006   
Auteur : ASP MAGAZINE

Concept

Au lieu d'afficher une page contenant 300 éléments par exemple, vous afficherez grâce à la pagination 30 pages de 10 éléments. La navigation entre les pages se fera grâce à un bouton suivant et un bouton précédent.
Tout cela sera géré par l'intermédiaire d'une unique page asp, à laquelle on fournira des paramètres différents.

Application

Soit une table Element issue d'une base de données (la base peut être de n'importe quel type) définie comme suit :

id_element titre_element description_element
numéroauto (clef primaire) Titre de l'élément descirption de l'élément

Les variables utilisées

Outre les variables classiques permettant l'ouverture d'une connexion sur une base de données et l'ouverture d'un recordset, nous utiliserons les variables suivantes :

NbElementParPage=10

Cette variable définie le nombre d'éléments que l'on souhaite afficher par page. Elle est initialisée en entête du document.

On initialisera le recordset de la manière suivante :
rs.Pagesize=NbElementParPage

Page

Cette variable définie la page en cours. Elle est initialisée après l'ouverture du recordset sur les éléments de la base  grâce au paramètre page fourni dans l'url appelée et sera définie comme suit :

<%
if request("page")="" then '--- Si le paramètre page est vide
    Page=1 '---- On commence à la page 1
    else
    if isnumeric(request("page")) then '---- Si le paramètre page est bien numérique
            page=cdbl(request("page")) '-----On en prend sa partie entière et on remplit la variable page
            if page > rs.pagecount then '----- Si la variable page et supérieure au nombre de pages
                   response.write("une erreur s'est produite")
                   rs.close '---- Fermeture des connexions base de données
                   set rs=nothing
                   conn.close
                   set conn=nothing
                   response.write("une erreur s'est produite")
                   response.flush '---- On arrête l'exécution
                   response.End '---- Cette option nécessite de placer en entête du document response.buffer=true
            end if
        else  '--- Le paramètre page n'est pas numérique
                   response.write("une erreur s'est produite")
                   rs.close '---- Fermeture des connexions base de données
                   set rs=nothing
                   conn.close
                   set conn=nothing
                   response.flush   '---- On arrête l'exécution
                   response.End
        end if
    end if
%>

A l'issue de cette section la variable page sera correctement initialisée et contiendra la valeur de la page en cours. Le paramètre page étant fournit dans l'url du document, le visiteur peut s'amuser à changer cette valeur. Si la valeur entrée "illicitement" n'est pas numérique ou dépasse le nombre de pages alors une erreur sera retournée.

On initialise ensuite le recordset de la manière suivante :
rs.AbsolutePage=Page

Les propiétés de l'objet recordset utilisées pour effectuer cette pagination

  • rs.AbsolutePage : définit le numéro de page en cours (ce numéro commence à 1 pour la première page)
  • rs.Pagesize : nombre d'éléments à afficher dans une page
  • rs.pagecount : nombre de pages totales

L'affichage des éléments dans la page

L'affichage proposé est très simple, mais il est possible d'en créer plus complexe et plus "propre" dans un tableau par exemple avec des font et des couleurs.

<%
for i=1 to rs.pagesize '--- de 1 jusqu'à la valeur de NbElementParPage
response.write(rs("titre_element")&"<br>")
response.write(rs("description_element")&"<br><br>"
rs.movenext
if rs.eof then '---- Si on est pas à la fin
        exit for
end if
next
%>

Affichage du bouton suivant et précédent

<%
'------- Bouton précédent
if page>1 then '--- Si on n'est pas sur la première page
Ref="pagine.asp?Page="&page-1
response.write("<a href="&ref&">Précédent</a>&nbsp;")
end if
%>

<%
'------- Bouton suivant
if page<rs.pagecount then '--- Si on n'est pas sur la dernière page
Ref="pagine.asp?Page="&page+1
response.write("<a href="&ref&">Suivant</a>&nbsp;")
end if
%>

Afficher le numéro de page en cours :

<%
response.write("Vous êtes sur la page "&page &" sur "&rs.pagecount&" au total")
%>

Exemple de Script complet : pagine.asp

Il nous suffit maintenant d'assembler les différents éléments précédemment vus :

<%
Response.buffer=True
Dim conn
Dim Ref
Dim rs
Dim NbElementParPage
Dim Page
Dim SQL

'---- Définition du nombre d'éléments par page
NbElementParPage=10


'---- Ouverture de la connexion à la base de données
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "mabase","",""

'---- Ouverture du recordset
SQL="select * from element"
Set rs=server.createObject("ADODB.recordset")
rs.open sql,conn,3,3

if not rs.eof then '--- Il y a des éléments dans la table
'--- On initialise le nombre d'éléments par page
rs.Pagesize=NbElementParPage

'---- Traitement de la variable page
if request("page")="" then '--- Si le paramètre page est vide
    Page=1 '---- On commence à la page 1
    else
    if isnumeric(request("page")) then '---- Si le paramètre page est bien numérique
            page=cdbl(request("page")) '-----On en prend sa partie entière et on remplit la variable page
            if page > rs.pagecount then '----- Si la variable page est supérieure au nombre de pages
                   response.write("une erreur s'est produite")
                   rs.close '---- Fermeture des connexions base de données
                   set rs=nothing
                   conn.close
                   set conn=nothing
                   response.write("une erreur s'est produite")
                   response.flush '---- On arrête l'exécution
                   response.End '---- Cette option nécessite de placer en entête du document response.buffer=true
            end if
        else  '--- Le paramètre page n'est pas numérique
                   response.write("une erreur s'est produite")
                   rs.close '---- Fermeture des connexions base de données
                   set rs=nothing
                   conn.close
                   set conn=nothing
                   response.flush   '---- On arrête l'exécution
                   response.End
        end if
    end if
    rs.absolutepage=page
    response.write("Vous êtes sur la page "&page &" sur "&rs.pagecount&" au total"&"br")
    '---- On affiche les éléments trouvés
    for i=1 to rs.pagesize '--- de 1 jusqu'à la valeur de NbElementParPage
        response.write(rs("titre_element")&"<br>")
        response.write(rs("description_element")&"<br><br>"
        rs.movenext
        if rs.eof then '---- Si on est pas à la fin
            exit for
        end if
    next
    '---- Affichage des boutons suivant et précédent
    '------- Bouton précédent
    if page>1 then '--- Si on est pas sur la première page
        Ref="pagine.asp?Page="&page-1
        response.write("<a href="&ref&">Précédent</a>&nbsp;")
    end if
    '------- Bouton suivant
    if page<rs.pagecount then '--- Si on est pas sur la dernière page
        Ref="pagine.asp?Page="&page+1
        response.write("<a href="&ref&">Suivant</a>&nbsp;")
    end if
else
    response.write("Aucun élément n'a été trouvé")
end if

rs.close '---- Fermeture des connexions base de données
set rs=nothing
conn.close
set conn=nothing

%>

Ce script peut servir de base à la création d'un moteur de recherche dont un paramètre supplémentaire à fournir serait par exemple motclef (le mot entré par l'utilisateur)



Proregna - L'hébergement ASP.NET


A RETENIR CETTE SEMAINE
16/05/2008 - Logiciels Microsoft gratuits pour les étudiants
Vous êtes étudiant ? N’attendez pas pour télécharger* gratuitement et utiliser les derniers logiciel ...
16/05/2008 - Lillois, ne manquez pas les Wygdays 2008
Le 22 mai prochain à Lille, vous êtes invité à un événement unique dédié aux développeurs, organisé ...
16/05/2008 - Flash 10 est dans les bacs, Silverlight prend du retard
On est peut-être à un tournant très important de la bataille que se livrent Microsoft et Adobe sur l ...
15/05/2008 - Comment manipuler simplement le contenu d'un fichier WordML ?
Le format WordML (et plus largement OpenXML ) est une grande avancée: il permet de manipuler les doc ...
15/05/2008 - Package d'installation réseau de Windows XP Service Pack 3 pour les informaticiens
Ce package d'installation est destiné à permettre aux informaticiens et aux développeurs de configur ...
15/05/2008 - Mono supporte désormais Windows Forms et Silverlight
Jour de gloire pour le projet Mono. Miguel de Icaza annonce tout d'abord sur son blog la première re ...
14/05/2008 - Deux Services Packs en bêta pour Visual Studio
Microsoft annonce deux Services Packs en version bêta pour Visual Studio 2008 et pour le framework . ...
(c) 1999-2006 ASP MAGAZINE SARL
Partenaires : Codes sources c2i ASP-PHP
Hébergement serveurs dédiés Windows


Hit-Parade