Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/02/2007, 20h41   #1
Nouveau Membre du Club
 
Inscription : novembre 2005
Messages : 317
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 317
Points : 35
Points : 35
Par défaut Pagination table base données en colonne

Bonsoir,

J'aimerai paginer l'affichage des records de ma requête, de telle sorte à avoir 4 colonnes par ligne. (1 colonne = 1 record affiché).

J'ai trouvé un exemple de code qui me permet d'afficher 10 records par page, mais un seul record par ligne.

J'ai mis le code ci-dessous, quelqu'un pourrait il me dire comment le modifier pour qu'il puisse correspondre à ce que je cherche à faire ? Merci d'avance.

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 
<%
Nmax = 10 ' nombre par page
Ndeb = Cint(request.queryString("num"))
 
' nombre total de fiches
SQL="SELECT count(*) FROM [fichiers]"
RS2 = conn.execute(SQL)
Ntotal = RS2(0) - 1 ' commence à 0
 
' sélectionne les fiches de la table
Set RS = server.createobject("ADODB.Recordset")
SQL="SELECT TOP " & (Ndeb+Nmax)_
& " * FROM [fichiers]"
RS.Open SQL,Conn , 3, 3
 
' Avance à la 1ère
RS.Move(Ndeb)
' tant qu'il reste des fiches
while not RS.eof
' affiche le champ
response.write RS("cat_titre") & "<br>"
' fiche suivante
RS.MOVENEXT
wend%>
 
<br>
 
<table cellpadding=3><tr>
<% ' NAVIGATION
' Des fiches avant ?
if Ndeb > 0 then%>
<td>
<A href="?num=0">Début</A>
<A href="?num=<%=Ndeb-Nmax%>">Retour</A>
</td>
<%end if%>
<td>
<% ' Page courante
Npag = int(Ndeb/Nmax)+1 : Npag2 = Npag-1
tmp = "<b>" & Npag & "</b>"
' Max 9 pages avant
while Npag2>0 AND Npag2>Npag-10
tmp = "<A href='?num=" & ((Npag2-1)*Nmax)_
& "'>" & Npag2 & "</A> " & tmp
Npag2 = Npag2-1
wend
' Max 9 pages après
Npag2 = Npag
while Npag2*Nmax<=Ntotal AND Npag2<Npag+9
Npag2 = Npag2+1
tmp = tmp & " <A href='?num=" & ((Npag2-1)*Nmax)_
& "'>" & Npag2 & "</A>"
wend
response.write tmp
%>
</td>
<% ' Des fiches après ?
if Ntotal>Ndeb+Nmax then%>
<td>
<A href="?num=<%=Ndeb+Nmax%>">Suite</A>
<A href="?num=<%=int(Ntotal/10)*10%>">Fin</A>
 
</td>
<%end if
 
RS.close : set RS=nothing%>
</tr></table>
 
</BODY></HTML>
<% conn.close : Set conn=nothing %>
Merci, Denis.
delavega est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2007, 00h44   #2
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
Salut,

il y a un truc que je comprend pas tu affiche le 1er champ de ta colonne dans ta boucle pourquoi tu ne mets pas la suite des champs que tu veux faire apparaitre ??

C'est quoi ce truc :
Code :
1
2
3
4
5
6
7
8
9
' Avance à la 1ère
RS.Move(Ndeb)
' tant qu'il reste des fiches
while not RS.eof
' affiche le champ
response.write RS("cat_titre") & "<br>"
' fiche suivante
RS.MOVENEXT
wend
Cela te permettra d'afficher les champs que tu veux et le nombre de ligne que tu as indiquer dans le Top, il n'ira pas plus loin
Code :
1
2
3
4
5
6
<%
Do while not.rs.eof
 Response.write Rs("cat_titre") &" "&Rs("cat_titre2") &" "&Rs("Cat_titre3") &" "&Rs("cat_titre4") &"<br>"
Rs.movenext
Loop
%>
Et si jamais dans une fiche il ne reste plus que deux enregistrements au lieu de trois, il n'affichera que deux lignes.

Désolé, je connais pas le nom des autres champs à faire apparaitre
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2007, 10h34   #3
Nouveau Membre du Club
 
Inscription : novembre 2005
Messages : 317
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 317
Points : 35
Points : 35
Merci pour ta réponse, mais j'aimerai savoir comment afficher plusieurs records dans plusieurs colonnes sur une ligne ?

Avoir 3 colonnes par ligne ?

(chacune des colonnes ayant un record affiché)

Eventuellement, restreindre le nombre de ligne à 10 par exemple, avoir ensuite un bouton "précédent" "suivant" pour les autres pages.

Merci
delavega est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2007, 10h58   #4
Nouveau Membre du Club
 
Inscription : novembre 2005
Messages : 317
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 317
Points : 35
Points : 35
Voilà, à la limite, j'ai trouvé le code idéal pour faire ce que je souhaite, sauf qu'il me manque simplement le faire que j'aimerai avoir l'affichage des records de ma base dans une colonne, et avoir 4 colonnes par ligne.

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 
<%
Nmax = 10 ' nombre par page
Ndeb = Cint(request.queryString("num"))
 
' nombre total de fiches
SQL="SELECT count(*) FROM [fichiers]"
RS2 = conn.execute(SQL)
Ntotal = RS2(0) - 1 ' commence à 0
 
' sélectionne les fiches de la table
Set RS = server.createobject("ADODB.Recordset")
SQL="SELECT TOP " & (Ndeb+Nmax)_
   & " * FROM [fichiers]"
RS.Open SQL,Conn , 3, 3
 
' Avance à la 1ère
RS.Move(Ndeb)
' tant qu'il reste des fiches
while not RS.eof
' affiche le champ
response.write RS("cat_titre") & "<br>"
' fiche suivante
RS.MOVENEXT
wend%>
<br>
<table cellpadding=3><tr>
<% ' NAVIGATION
' Des fiches avant ?
if Ndeb > 0 then%>
<td>
<A href="?num=0">Début</A>
<A href="?num=<%=Ndeb-Nmax%>">Retour</A>
</td>
<%end if%>
<td>
<% ' Page courante
Npag = int(Ndeb/Nmax)+1 : Npag2 = Npag-1
tmp = "<b>" & Npag & "</b>"
' Max 9 pages avant
while Npag2>0 AND Npag2>Npag-10
   tmp = "<A href='?num=" & ((Npag2-1)*Nmax)_
      & "'>" & Npag2 & "</A> " & tmp
   Npag2 = Npag2-1
wend
' Max 9 pages après
Npag2 = Npag
while Npag2*Nmax<=Ntotal AND Npag2<Npag+9
   Npag2 = Npag2+1
   tmp = tmp & " <A href='?num=" & ((Npag2-1)*Nmax)_
      & "'>" & Npag2 & "</A>"
wend
response.write tmp
%>
   </td>
<% ' Des fiches après ?
if Ntotal>Ndeb+Nmax then%>
   <td>
      <A href="?num=<%=Ndeb+Nmax%>">Suite</A>
<A href="?num=<%=int(Ntotal/10)*10%>">Fin</A>
   </td>
<%end if
 
RS.close : set RS=nothing%>
</tr></table>
 
</BODY></HTML>
<% conn.close : Set conn=nothing %>
Est-ce que ce code pourrait être modifié facilement pour inclure l'option que je souhaite ?

Merci d'avance,

Denis
delavega est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2007, 11h36   #5
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
Salut,

Désolé, je comprend rien du tout à ce que tu veux J'ai récupéré le code afin de mieux voir ce qu'il faisait et il affiche 10/10 enregistrements dans une colonne.
C'est pas très clair ce que tu veux, tu dis :
Citation:
j'aimerai avoir l'affichage des records de ma base dans une colonne
Pour cela, il faudrait que tu es une colonne contenant toutes les valeurs des autres champs

et après :
Citation:
et avoir 4 colonnes par ligne
Tu veux afficher tout les résultats ou 4 champs de ta table ??

En ce qui concerne la 2ème citations, applique simplement le fait d'ajouter les champs que tu veux faire apparaitre dans la boucle ie :
Code :
Response.write Rs("cat_titre") &" "&Rs("cat_titre2") &" "&Rs("Cat_titre3") &" "&Rs("cat_titre4") &"<br>"
Par contre, la 1ere citation explique toi mieux parce que la je peux pas t'aider
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2007, 11h48   #6
Nouveau Membre du Club
 
Inscription : novembre 2005
Messages : 317
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 317
Points : 35
Points : 35
Excuses moi, ce n'est pas très clair

Alors voilà, j'ai pas exemple une base de données avec 20 records à l'interieur.

Je souhaiterai paginer l'affichage de ma base, de façon à avoir :

1 ligne = 4 records (affiché chacun des records dans une colonne, 1 seul champs pour l'instant)

ligne 1 ............ id_prod#1 id_prod#2 id_prod#3 id_prod#4
ligne 2 ............ id_prod#5 id_prod#6 id_prod#7 id_prod#8
ligne 3 ............ id_prod#9 id_prod#10 id_prod#11 id_prod#12
ligne 4 ............ id_prod#13 id_prod#14 id_prod#15 id_prod#16

etc. ...

et ainsi de suite ...

simplement rajouter cette option d'affichage au code précédemment posté ici.

Merci
delavega est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2007, 18h57   #7
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
Re salut,

Est ce que tes id_prod#i doivent-ils etre visibles ???
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2007, 19h13   #8
Membre confirmé
 
Avatar de Poussy-Puce
 
Développeur Web
Inscription : octobre 2005
Messages : 357
Détails du profil
Informations personnelles :
Âge : 30
Localisation : Canada

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2005
Messages : 357
Points : 206
Points : 206
Code :
1
2
3
4
5
6
7
8
<% 
For x = 1 to Ntotal  
if x Mod 4 = 0 Then
   Response.Write "<br />"
end if
Response.write Rs("cat_titre") 
Rs.movenext 
Next%>
Bon là j'ai fait avec ce que tu as, mais je ne dis pas que c'est la meilleure façon!!!

En tout cas, tu peut toujours essyer cette voie!!!
__________________
Plus tu pédales moins vite, moins tu avances plus vite...
La vie, c'est comme une bicyclette, il faut avancer pour ne pas perdre l'équilibre...
Poussy-Puce est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 08h33   #9
Nouveau Membre du Club
 
Inscription : novembre 2005
Messages : 317
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 317
Points : 35
Points : 35
Bonjour,

Voici un code qui correspond exactement à ce que je cherche à obtenir, résultat visible en ligne sur l'adresse suivante :

http://www.indianfashionlyon.com/galerie.asp

En revanche, et c chiant ce code est en : <%@LANGUAGE = JScript%>

Résultat, je n'arrive pas à l'adapter à ma page de pagination de ma base

Voici le code complet :

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
 
<%@LANGUAGE = JScript%>
<%
  var Cn = new ActiveXObject("ADODB.Connection");
  var Sc = "driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("./admin/data/juris.mdb");
  Cn.Open(Sc); 
  var Sql = "SELECT * FROM fichiers ORDER BY id_prod ";
  var Mostra = new ActiveXObject("ADODB.Recordset");
  Mostra.Open(Sql,Cn, 1);
      var conta = 0;
 
   var pag = parseInt(Request.QueryString("id"));
 
       if (isNaN(pag) || pag < 1) pag = 1;
       if (!Mostra.EOF) {
            Mostra.PageSize = 9;
            Mostra.AbsolutePage = pag;
       }
   var i = 0;
 
 if (pag==1)
 inicio=1
else
 inicio=1+(pag-1)*Mostra.PageSize
 
fin=inicio+Mostra.PageSize-1
if (fin > Mostra.recordcount)
fin =Mostra.recordcount
 
%>
<table align="center" cellpadding="0" cellspacing="0" height="129" bgcolor="#FFFFFF">
<% while (!Mostra.EOF  && i<9)
{ 
i++
// Impostiamo la condizione secondo la quale se arriviamo a 3 record andremo a capo con </tr> e <tr>
        if (conta == 3) //Mettez ici le nombre d'enregistrement par ligne
        {
            conta = 0; // Resettiamo il contatore impostandolo su zero (0)
%>
                    <tr><td onMouseOver="javascript:this.style.backgroundColor='white'" onMouseOut="javascript:this.style.backgroundColor=''" width="200" height="129"><p align="center"><a href="#" onClick="window.open('detail.asp?produit=<%=Mostra("id_prod")%>','newWindow','width=800,height=600');"><img src="./admin/data/<%=Mostra("cat_visu")%>" height="100" border="0" align="middle"></a></td>
<%
        }
        // altrimenti restiamo sulla stessa riga
        else
        {
%>
                    <td onMouseOver="javascript:this.style.backgroundColor='white'" onMouseOut="javascript:this.style.backgroundColor=''" width="200" height="129"><p align="center"><a href="#" onClick="window.open('detail.asp?produit=<%=Mostra("id_prod")%>','newWindow','width=800,height=600');"><img src="./admin/data/<%=Mostra("cat_visu")%>" height="100" border="0" align="middle"></a><a href="javascript:newWindow_Preview('showing.asp?imgID=<%=Mostra("id_prod")%>','preview','scrollbars=yes, status=yes, height=300, width=500')" title="<%=Mostra("cat_titre")%>"></a></td>
<%
        }
        conta++; // Incrementiamo la variabile contatore
          Mostra.moveNext()   
        }
%>
 </tr>
</table>
 
<table border="0" width="100%">
  <tr>
    <td width="100%"></td>
  </tr>
</table>
<div align="center">
  <center>
<table width="412" height="1">
 <tr>
   <td width="183" height="1">
      <%if (pag > 2 && Mostra.PageCount > 2) {%><font face=tahoma size=2><a href="galerie.asp?id=<%=1%>">Premier</a><%}%>
      <%else if (Mostra.PageCount<=2) {%>&nbsp;&nbsp;<%}%>
      <%else {%><font face=tahoma size=2 color="#C0C0C0">Premier</font></font><font face="tahoma" size="2" color="#C0C0C0">&nbsp;&nbsp;
   </font><font face=tahoma size=2><font face="Tahoma" size="2">&nbsp;
   <%}%>
      <%if (pag > 1) {%>&nbsp;&nbsp;&nbsp;</font></font><font face="Tahoma" size="2"><font face=tahoma size=2><a href="galerie.asp?id=<%=pag - 1%>">&lt;&lt; Précédent</a><%}%>
      <%else {%><font face=tahoma size=2 color="#C0C0C0">&lt;&lt; Précédent<%}%>
      </font>
   </font>
   </font>
   </td>
   <td width="65" height="1"><p align="center"><%
      for (var i=0; i<Mostra.PageCount; i++)
      {
         if (pag == (i + 1))
         {
   %>
         <b><%=(i + 1)%></b>
   <%} else {%>
         <a href="galerie.asp?id=<%=(i + 1)%>"><%=(i + 1)%></a>
   <%
       }
      }
   %>
</p></td>
   <td width="189" align="right" height="1">
      <p align="center">
      <%if (!Mostra.EOF) {%><font face=tahoma size=2><a href="galerie.asp?id=<%=pag + 1%>">Suivant
      &gt;&gt;</a><%}%>
      <%else {%><font color=#C0C0C0 face=tahoma size=2>Suivant &gt;&gt;<%}%>
      <%if (!Mostra.EOF && pag < Mostra.PageCount-1) {%>&nbsp;&nbsp;<font face=tahoma size=2><a href="galerie.asp?id=<%=Mostra.PageCount%>">Dernier</a><%}%>
      <%else if (Mostra.PageCount<=2) {%>&nbsp;&nbsp;<%}%>
      <%else {%>&nbsp;&nbsp;&nbsp;&nbsp;<font color=#C0C0C0 face=tahoma size=2>Dernier<%}%><font face=tahoma size=2>
      </font>
</td>
 </tr>
</table>
  </center>
</div>
      <%Cn.Close()%>
J'aimerai savoir comment adapter / convertir ce code en ASP pure, enfin, dans la mesure du possible ou pas ?

Merci encore pour votre aide,

Denis
delavega est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2007, 21h28   #10
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Salut,

J'ai pas tout lu, mais tu peut peut-être t'inspirer de ceci:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
i=1
FOR k = 1 to 17
	response.Write("<tr>" + Chr(13) + Chr(10))
	FOR j = 1 to 15
		response.Write("<td align=center valign=top nowrap>")
		response.Write("Chr(" & i &")<br>Ascii: " & Chr(i) & "<br>")
		response.Write("HTML: " & replace(server.HTMLEncode(Chr(i)),"&","&amp;") & "<br>")
		response.Write("URL: " & server.URLEncode(Chr(i)) & "</td>" + Chr(13) + Chr(10))
		i=i+1
	NEXT
	response.Write("</tr>" + Chr(13) + Chr(10))
NEXT
A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h42.


 
 
 
 
Partenaires

Hébergement Web