begin process at 2012 05 27 04:22:06
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > AFFICHAGE PAR PAGE DU RÉSULTAT D'UNE REQUÊTE

AFFICHAGE PAR PAGE DU RÉSULTAT D'UNE REQUÊTE


 Information sur la source

Note :
1,33 / 10 - par 3 personnes
1,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Niveau :Initié Date de création :03/07/2002 Date de mise à jour :03/07/2002 04:21:03 Vu / téléchargé :12 076 / 371

Auteur : Black_Pit

Ecrire un message privé
Site perso
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Lorsque que le résultat d'une requête retourne beaucoup d'enregistrements, il peut être utile de l'afficher sur plusieurs pages.  Cette source le fait pour des photos.  Le détails des photos (chemin, width, height, titre, description, etc) est entreposé dans une table SQL.

Source

  • <!-- #include file="include/constantes.asp" -->
  • <html>
  • <head>
  • <title>Result</title>
  • </head>
  • <%
  • '---------------------------------------------------------------
  • '-------------------Déclaration des variables-------------------
  • '---------------------------------------------------------------
  • Dim I 'As Integer
  • Dim strHTLM 'As String
  • Dim strPage 'As String
  • Dim intNbrEnregis 'As Integer
  • Dim intPhotoAffiche 'As Integer
  • Dim intPhotoTotal 'As Integer
  • Dim boFinPhoto 'As Boolean
  • Dim intNbrPage 'As Integer
  • Dim intNbrCol 'As Integer
  • '---------------------------------------------------------------
  • '-----------Création de la connection et du recordset-----------
  • '---------------------------------------------------------------
  • Set Conn = Server.CreateObject("ADODB.Connection")
  • Conn.Open DB_CONNECTION_STRING 'Définit dans le #Include File
  • set rs = server.CreateObject("ADODB.RECORDSET")
  • '---------------------------------------------------------------
  • '------------------Définition des Variables---------------------
  • '---------------------------------------------------------------
  • 'Variables pour la pagination
  • intNbrEnregis = 25 'Nombre de photos par pages
  • intPhotoAffiche = 0 'Nombre de photos affichées sur la page en cours
  • intPhotoTotal = 0 'Nombre de photo au total
  • intNbrCol = 5 'Nombre de photos par rangée
  • strPage = TRIM(Request.QueryString("page")) 'la page que l'on veut afficher
  • IF strPage = "" THEN
  • strPage = 0
  • END IF
  • 'Variables pour la requête
  • ReqSql = "SELECT * FROM Photo"
  • ReqSql = ReqSql & " Where Ce_que_vous_voulez"
  • ReqSql = ReqSql & " ORDER BY PhotoId" 'C'est important de définir un ordre immuable, surtout si vous utiliser SQL
  • '---------------------------------------------------------------
  • '-------------------Exécution de la requête---------------------
  • '---------------------------------------------------------------
  • Rs.Open ReqSql, Conn
  • Rs.MoveFirst
  • '---------------------------------------------------------------
  • '-------------------Affichage des résultats---------------------
  • '---------------------------------------------------------------
  • do While Not Rs.EOF
  • intPhotoTotal = intPhotoTotal + 1
  • Rs.MoveNext
  • Loop
  • Response.Write "Il y a " & intPhotoTotal & " photo(s)."
  • IF Rs.EOF AND Rs.BOF THEN
  • Response.Write "<FONT SIZE=+3 COLOR=""#357A95""><DIV ALIGN=""center"">Il n'y a de photos pour cette requête</DIV></FONT>"
  • ELSE
  • Rs.MoveFirst
  • Rs.Move (strPage * intNbrEnregis)
  • on error resume next
  • Do While Not Rs.EOF
  • For I = 1 to intNbrCol
  • intPhotoAffiche = intPhotoAffiche + 1
  • If I = 1 then 'prépare une nouvelle rangée
  • Response.Write "<tr>"
  • End If
  • strHTML = "<td><A HREF=""model.asp?Id=" & Rs.Fields("PhotoId") &""" alt="""" border=""0""></a></td>"
  • Response.Write (strHTML) 'En cliquant sur la photo, celle-ci s'agrandit selon les paramêtres recueillit dans la BD
  • If I = intNbrCol then 'Ferme la rangée
  • Response.Write "</tr>"
  • End If
  • Rs.MoveNext
  • If Rs.EOF then
  • If I <> intNbrCol then 'Ferme la rangée si le recordset est terminé mais que la rangé ne l'est pas
  • Response.Write "</tr>"
  • End If
  • Exit For 'Il n'y a plus de photos à afficher
  • End If
  • Next
  • If intPhotoAffiche = intNbrEnregis Then 'On arrête l'affichage
  • Exit Do
  • End If
  • Loop
  • END IF
  • %>
  • </table>
  • <br>
  • <font face="Arial, Helvetica, sans-serif" size="2">
  • <%If intPhotoTotal > intNbrEnregis Then 's'il y a plus de photos que permis sur une page
  • 'définir le nombre de pages requises
  • If intPhotoTotal mod intNbrEnregis > 0 then
  • intNbrPage = 1
  • Else
  • intNbrPage = 0
  • End if
  • intNbrPage = IntNbrPage + (intPhotoTotal \ intNbrEnregis)
  • 'définir le nom des pages (De quelle photos à quelle photos) ex: | 1-25 | 26-43 |
  • Response.Write "| "
  • For I = 0 to intNbrPage -1
  • If I <> IntNbrPage - 1 then
  • Response.Write "<a href=""Result_By_Page.asp?page="& I &""">" & 1 + (I * intNbrEnregis) & "-" & intNbrEnregis + (I * intNbrEnregis) & "</a>"
  • Else
  • Response.Write "<a href=""Result_By_Page.asp?page="& I &""">" & 1 + (I * intNbrEnregis) & "-" & (I * intNbrEnregis) + (intPhotoTotal - (I * intNbrEnregis)) & "</a>"
  • End If
  • Response.Write " | "
  • Next
  • End If%>
  • </font>
  • </body>
  • </html>
  • <%
  • Rs.Close
  • Conn.close
  • Set Rs = nothing
  • set Conn = nothing
  • %>
<!-- #include file="include/constantes.asp" -->
<html>
<head>
  <title>Result</title>
</head>
<%
'---------------------------------------------------------------
'-------------------Déclaration des variables-------------------
'---------------------------------------------------------------
Dim I                'As Integer
Dim strHTLM          'As String
Dim strPage          'As String
Dim intNbrEnregis    'As Integer
Dim intPhotoAffiche  'As Integer
Dim intPhotoTotal    'As Integer
Dim boFinPhoto       'As Boolean
Dim intNbrPage       'As Integer
Dim intNbrCol        'As Integer 

'---------------------------------------------------------------
'-----------Création de la connection et du recordset-----------
'---------------------------------------------------------------
Set Conn = Server.CreateObject("ADODB.Connection")	
Conn.Open DB_CONNECTION_STRING 'Définit dans le #Include File
set rs = server.CreateObject("ADODB.RECORDSET")

'---------------------------------------------------------------
'------------------Définition des Variables---------------------
'---------------------------------------------------------------
'Variables pour la pagination
intNbrEnregis   = 25		'Nombre de photos par pages
intPhotoAffiche = 0     'Nombre de photos affichées sur la page en cours
intPhotoTotal   = 0     'Nombre de photo au total
intNbrCol       = 5     'Nombre de photos par rangée
strPage         = TRIM(Request.QueryString("page")) 'la page que l'on veut afficher

IF strPage = "" THEN 
  strPage = 0
END IF

'Variables pour la requête
ReqSql = "SELECT * FROM Photo"
ReqSql = ReqSql & " Where Ce_que_vous_voulez"
ReqSql = ReqSql & " ORDER BY PhotoId" 'C'est important de définir un ordre immuable, surtout si vous utiliser SQL

'---------------------------------------------------------------
'-------------------Exécution de la requête---------------------
'---------------------------------------------------------------
Rs.Open ReqSql, Conn
Rs.MoveFirst

'---------------------------------------------------------------
'-------------------Affichage des résultats---------------------
'---------------------------------------------------------------
do While Not Rs.EOF
  intPhotoTotal = intPhotoTotal + 1
	Rs.MoveNext
Loop

Response.Write "Il y a " & intPhotoTotal & " photo(s)."


IF Rs.EOF AND Rs.BOF THEN
  Response.Write "<FONT SIZE=+3 COLOR=""#357A95""><DIV ALIGN=""center"">Il n'y a de photos pour cette requête</DIV></FONT>"
ELSE
  Rs.MoveFirst
  Rs.Move (strPage * intNbrEnregis)
  
  on error resume next
  
  Do While Not Rs.EOF
    For I = 1 to intNbrCol
      intPhotoAffiche = intPhotoAffiche + 1      
      If I = 1 then 'prépare une nouvelle rangée
        Response.Write "<tr>"
      End If
      
	    strHTML = "<td><A HREF=""model.asp?Id=" & Rs.Fields("PhotoId") &""" alt="""" border=""0""></a></td>"
      Response.Write (strHTML) 'En cliquant sur la photo, celle-ci s'agrandit selon les paramêtres recueillit dans la BD
      
      If I = intNbrCol then 'Ferme la rangée
        Response.Write "</tr>"
      End If
  	  Rs.MoveNext
 	  
 	    If Rs.EOF then
        If I <> intNbrCol then 'Ferme la rangée si le recordset est terminé mais que la rangé ne l'est pas
	        Response.Write "</tr>"
	      End If
	      Exit For 'Il n'y a plus de photos à afficher
	    End If
	    
    Next
    
    If intPhotoAffiche = intNbrEnregis Then 'On arrête l'affichage
      Exit Do
    End If
    
  Loop
END IF
%>
</table>
<br>
<font face="Arial, Helvetica, sans-serif" size="2"> 
<%If intPhotoTotal > intNbrEnregis Then 's'il y a plus de photos que permis sur une page
    'définir le nombre de pages requises
		If intPhotoTotal mod intNbrEnregis > 0 then 
		  intNbrPage = 1
		Else
		  intNbrPage = 0
		End if 
		intNbrPage = IntNbrPage + (intPhotoTotal \ intNbrEnregis) 

    'définir le nom des pages (De quelle photos à quelle photos) ex: | 1-25 | 26-43 |
		Response.Write "| "
		For I = 0 to intNbrPage -1 
		  If I <> IntNbrPage - 1 then
		    Response.Write "<a href=""Result_By_Page.asp?page="& I &""">" & 1 + (I * intNbrEnregis) & "-" & intNbrEnregis + (I * intNbrEnregis) & "</a>"
		  Else
		    Response.Write "<a href=""Result_By_Page.asp?page="& I &""">" & 1 + (I * intNbrEnregis) & "-" & (I * intNbrEnregis) + (intPhotoTotal - (I * intNbrEnregis)) & "</a>"
		  End If
		  Response.Write " | "
		Next
	End If%>
</font> 
</body>
</html>
<%
Rs.Close
Conn.close
Set Rs = nothing
set Conn = nothing
%>

 

 Conclusion

1- DB_CONNECTION_STRING est définit dans un le #Include File.  Voyez les codes sources sur ce site pour savoir comment faire.

2- Assurez vous de bien définir la clause ORDER BY sur un champ Identity si vous voulez que le résultat s'affiche toujours dans le même ordre.

3- Évitez de faire plusieurs Response.Write comme j'ai fait.  Mettez-les plutôt dans une variable que vous imprimez à la toute fin de la procédure.  Cela sauvera beaucoup de requête aux serveurs.

4- Visitez http://www.lesetoiles.com sous la rubrique "Galerie de photos".  Vous y trouverez un exemple fonctionel.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

QUAND METTRE UNE CLAUSE WHERE?

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) ASP.NET - SAVOIR QUAND L'UTILISATEUR FERME LA FENETRE VIA CA... par werdDomain
CLASSE IMBRIQUÉS EN VBSCRIPT DE DOSSIERS (APPLICABLE ASP) par internetdev
Source avec Zip SÉRIALISER / DÉSÉRIALISER DES VARIABLES EN ASP par lejdu
CREATION D'UN AUTOCOMPLETE JQUERY AVEC UN CODE SOURCE ASP ET... par dedebis84
Source .NET (Dotnet) RÉCUPÉRER DES VALEURS D'UNE LIGNE DANS UN DATAGRID APRÈS AVO... par PascalCmoa

Commentaires et avis

Commentaire de jakes0 le 21/02/2003 11:34:20

Serait-il possible d'avoir le code source du fichier "model.asp" ?
merci d'avance.

Commentaire de nyvad le 21/03/2003 17:27:23

je débute en asp, la question est sans doute idiote, mais que contient le fichier "constante.asp" sité en haut de page ?

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,761 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales