Probleme de pagination en asp

cs_elbahja Messages postés 4 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 29 août 2005 - 24 août 2005 à 18:03
cs_elbahja Messages postés 4 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 29 août 2005 - 29 août 2005 à 16:33
Salut !
J'ai un probleme de pagination en asp, quand j'utilise une requete SELECT avec la clause WHERE juste la premiere page qui s'affiche, donc je perd le recordset.
Alors que si je fait juste SELECT * From maTable, je perd pas le recordset et les pages suivantes s'affichent correctement.
Merci d'avance pour votre aide.

6 réponses

Krusty69_ Messages postés 10 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 25 février 2013
27 août 2005 à 18:16
Donne nous un exemple de code car c'est pas très clair pour moi....
0
cs_elbahja Messages postés 4 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 29 août 2005
27 août 2005 à 22:03
Merci de votre réponse.


Je vais essayer d’éclaircir mieux la situation en donnant un exemple court du code :


Je voudrai afficher la liste des produits dont le critère Prix choisi par l’utilisateur.


Dans la page html j’ai un code qui ressemble au suivant :


<form name="form1" method="post" action="afficher.asp">


Paix :










</form>




Dans ma page afficher.asp où je voudrais faire la pagination en fonction du prix entré par l’utilisateur.
Admettant je voudrais afficher un maximum de 10 résultat par page dont le code est le suivant :




Str = "SELECT*FROMtblProduit WHEREPrix < ” & Request.Form(“txtPrix”)




Set objRS = Server.CreateObject("ADODB.Recordset")


objRS.Open str, objConn,3,3




if not objRS.eof then ' il ya des enregistrements


'------ on initialise le nombre d'élements par page


objRS.PageSize = 10




'-------Traitement de la variable page


if request("page") = "" Then ' si le parametre page est vide


Page = 1'on commence à la page 1


else


if isnumeric(request("page")) then '--


page = cdbl(request("page")) '--prendre la partie entiere


if page > objRS.pagecount then '--Si la variable est > au nbre de page


Response.Write "Une erreur s'est produite : a variable est > au nbre de page"


objRS.close


set objRS = nothing


objConn.close


Set objConn= nothing


response.Flush '--on arrete l'execution


response.End


end If


Else'--Le parametre page n'est pas num


Response.Write "Une erreur s'est produite : Le parametre page n'est pas num"


objRS.close


set objRS = nothing


objConn.close


Set objConn= nothing


response.Flush '--on arrete l'execution


response.End


End If


End If


objRS.absolutepage= page


Response.Write " Vous êtes sur la page " & page& " sur " & objRS.pagecount & " au total.
"




for i=1 To objRS.pagesize'-- de 1 jusqu'à la valeur de NbElementParPage


'=======Affichage des éléments trouvés ===============


objRS.MoveNext


if objRS.eof Then


exit For


end if


Next


'-- Affichage des lien précedent et suivant


'--- Lien Précédent


If page>1 Then '---Si on est pas sur la 1er page


Ref = "?Page=" & page-1




Response.Write "[ & ref& Précédent] &nbsp;"


End If


'--- Lien Suivant


If page < objRS.pagecount Then '---Si on est pas sur le dérnier enregstrement


Ref = "?Page=" & page+1


Response.Write "[ & ref& SUIVANT] &nbsp;"


End If


Else


Response.Write"Pas d’enregistrement"


End If


Admettant j’ai 14 résultats qui correspondent à mon critère de sélection sur leprix.


Le problème est le suivant : dans la 1 er page il s’affiche les dix premiers résultats.


Mais quand je click sur SUIVANT, j’ai le messagePas d’enregistrement


Alors que si je met une constante dans ma requete comme :


"SELECT*FROMtblProduit WHEREPrix < 200 ”


Les deux pages s’affichent correctement, la 1ère page de 10 résultats et la 2ème page de 4 résultats.


C’est pour cela que je conclu qu’il y a un problème avec l’objet RecordSet.


Merci encore pour votre aide.
0
Krusty69_ Messages postés 10 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 25 février 2013
28 août 2005 à 09:15
Essaie de prendre ta variable en request.querrystring et de la remettre dans un champs caché ==>

Cela peut t'aider.

Pour le reste, je ne suis pas habitué à ce style de pagination (je fais des appli locales qui n'ont pas besoin de ce style d'affichage mais de règles pour l'impression) donc je te conseille d'aller voir ce lien : http://www.asp-php.net/tutorial/asp-php/pagination.php

Si cela ne va tjs pas envoie moi ton mail et je t'enverrai un exemple plus simple pour ta pagination
0
cs_elbahja Messages postés 4 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 29 août 2005
28 août 2005 à 15:10
Et comment récuperer mavar du champ hidden pour la mettre comme paramettre dans ma requête Select.
Merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Krusty69_ Messages postés 10 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 25 février 2013
28 août 2005 à 22:45
Dès que ta variable est déclarée tu peux l'employer à tt moment dans ton code.

mavar = requeest.querrystring ("mavar")
sql="Select * from matable where mavar =" & mavar

Quand tu la mets dans un champ caché, c'est pour la réemployer quand tu envoie ton form.
Ce n'est pas obligatoire mais plus un reflexe pour moi ;o)
Pour plus de simplicité (pour moi tjs) déclare ton recordset minimum et maximu

minrs = 0 (ou current rs)
maxrs = 10

while not rs.eof AND rsmin < rsmax
response.write rs("prix") & " " & rs ("...")
rs.movenext
minrs = (minrs+1)
wend

....
0
cs_elbahja Messages postés 4 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 29 août 2005
29 août 2005 à 16:33
Merci beaucoup Alexandre pour ton aide,
Le problème était dans la référence de mon lien Response.Write "[ & ref & SUIVANT] &nbsp;"
Problème réglé. Merci...
0
Rejoignez-nous