Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1682 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  afficher un nombre limité de produit par page

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

afficher un nombre limité de produit par page

n°1854403
chamardall
Posté le 23-02-2009 à 22:56:55  profilanswer
 

Bonjour,
je développe une application web avec jsp (j2ee), mon besoin est de faire importer un nombre limité de produit par page avec deux bouton "suivant" et "précédent" pour pouvoir naviguer, mon code est celui-ci:
 
<%@ page contentType="text/html;charset=windows-1252" import="view.*,java.util.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
 
<table width="200" border="0">
    <tr>    
      <td>      
        <table border=1>
          <tr>
            <td><input type="checkbox" checkme="group" tabindex="12"></td>
            <td>Type</td>
            <td>Sujet</td>
            <td>Message</td>
          </tr>
            <%
               Contact cont= new Contact();
               Vector v=cont.getListeContact();
               int p = 1;
               int suivant = p + 1;
               int precedent = p - 1;
               int nppp=3;
               for(int i=1; i<=nppp;i++){
               Contact s=(Contact)v.elementAt(i);
               String typeCon=s.TypeContact;
               String sujetCon=s.sujetContact;
               String mailCon=s.mailContact;
               int idCon=s.idContact;              
               %>
          <tr>
            <td><input name="<%=idCon%>" type="checkbox" checkme="group" tabindex="12">
             <td> <%=typeCon%></td>
             <td> <%=sujetCon%></td>
             <td><a href="" >détails </a></td>
          </tr><%}%>
        </table>      
      </td>
    </tr>
    <tr>
      <td align="center"><input onclick="return confirm();" name="submit" type="submit" id="supprimer" value="supprimer" tabindex="3"/></td>
    </tr>
  </table>  
  <table>
    <tr>
     <td width="200px"><%if(precedent >= 1){out.println("<a href=admin_consulter_mail1.jsp?p="+precedent+">precedent</a>" );}%></td>
     <td width="200px"><%if(suivant <= v.size()){out.println("<a href=admin_consulter_mail1.jsp?p="+suivant+">suivant</a>" );}%></td>
    </tr>
  </table>
</body>
</html>
 
 
et la page contact.java est:
package view;
import com.evermind.sql.ResultSetBCELProxy;
import java.sql.*;
import java .io.*;
import java.util.*;
public class Contact  
{
/**
   *  
   * @param args
   */
public int idContact;
public String TypeContact;
public String sujetContact;
public String mailContact;
public String messageContact;
 
  public Contact(int idContact,String TypeContact,String sujetContact,String mailContact,String messageContact)
  {
  this.idContact=idContact;
  this.TypeContact=TypeContact;
  this.sujetContact=sujetContact;
  this.mailContact=mailContact;
  this.messageContact=messageContact;
   }
public Vector getListeContact(){  
  Vector tmp=new Vector();
  try
  {
    Connection con=Connexion.getConnexion();
    Statement st=con.createStatement();
    String requete="select * from contactadmin";
    ResultSet rs=st.executeQuery(requete);
    while(rs.next()){
    String Type=rs.getString("typeContact" );
    String sujet=rs.getString("sujetContact" );
    String mail=rs.getString("mailContact" );
    String message=rs.getString("messageContact" );
    Contact d=new Contact(Type,sujet,mail,message);
    tmp.addElement(d);    
    }
  }
  catch (Exception e)
  {
    e.printStackTrace();
  }
  return(tmp);  
  }
         }
   
le résultat que j'obtient apres l'exécusion de ce code c'est l'affichage des tois premiers messages (c'est bon) et lorsque j'appuie sur le bouton "suivant" il affiche les memes trois premiers messages
alors où est ma faute? svp aidez moi à trouver la bonne solution et merci d'avance

mood
Publicité
Posté le 23-02-2009 à 22:56:55  profilanswer
 

n°1856773
Bidem
Posté le 02-03-2009 à 16:56:07  profilanswer
 

Code :
  1. ...
  2. int p = 1; // ici il faut lire le paramètre de la requête
  3. int suivant = p + 1;
  4. int precedent = p - 1;
  5. int nppp=3;
  6. for(int i=1; i<=nppp;i++) { // ici il faut définir les bornes inférieur et supérieur en fonction de p
  7. ...
  8. }

n°1856821
chamardall
Posté le 02-03-2009 à 17:59:06  profilanswer
 

bonjour
merci pour la réponse
j'ai modifié le code en:
 
<%                    
              int pageCourante = 1;
               if((null!=p)&&(!"".equals(p))) {pageCourante=request.getParameter("Integer.parseInt(p)" );}  
               int suivant = pageCourante  + 1;
               int precedent = pageCourante  - 1;
               int nppp=3;
               Contact cont= new Contact();
               Vector v=cont.getListeContact();
               for(int i=pageCourante; i<=nppp;i++){
               Contact s=(Contact)v.elementAt(i);
               String typeCon=s.TypeContact;
               String sujetCon=s.sujetContact;
               String mailCon=s.mailContact;
               int idCon=s.idContact;                
               %>
 
avec dans l'entête g fait:
<%@ page contentType="text/html;charset=windows-1252" import="view.*,java.util.*"%>
<jsp:useBean id="p" class="java.lang.String" scope="request" />
 
 
mais le meme probleme persiste encore
car le résultat m'affiche pour la premiere fois les trois premieres enregistrement de la bd et en cliquant sur suivant il m'affiche les mêmes trois première enregistrements;; il me manque surement une boucle pour passer aux autres!
mais quesque je dois incrémenter??
merci de votre aide

n°1856851
Bidem
Posté le 02-03-2009 à 18:56:26  profilanswer
 

<jsp:useBean id="p" class="java.lang.String" scope="request" />

 

ça ne récupère pas un paramètre de la requête mais un attribut
http://www.xyzws.com/servletfaq/wh [...] arameter/1

 
Code :
  1. // Récupération du paramètre de la requête
  2. String p = request.getParameter("p" );
  3. int pageCourante = 1;
  4. if ((null!=p) && (!"".equals(p))) {pageCourante=Integer.parseInt(p);}
 

Maintenant il faut trouver une formule qui donne l'indice du premier item d'une page, ça nous donnera la borne inférieur de la boucle for.

 

Si ta liste contient 10 éléments et vu que nppp est égal à 3, leurs indices (de 0 à 9) seront répartis comme ça :
page 1 : 0 1 2
page 2 : 3 4 5
page 3 : 6 7 8
page 4 : 9

 

Avec un peut de réflexion/intuition/habitude, on trouve la relation suivante :
indicePremierItem = (pageCourante - 1) * nppp

 

d'où la boucle for :

Code :
  1. for (int i = indicePremierItem; i < indicePremierItem + nppp; i++) {...
 

Autre remarque :

Code :
  1. Contact cont= new Contact();
  2. Vector v=cont.getListeContact();


Çà n'a rien à voir mais tu gagnerai en performance si tu mettais la liste de contacts en session lors de l'appel à la première page parce que là tu fais un appel à la base de données à chaque fois...


Message édité par Bidem le 02-03-2009 à 18:57:32

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  afficher un nombre limité de produit par page

 

Sujets relatifs
Programmation d'une page réceptrice d'infosacceder a une page web pourmodification
comment faire pour faire une page "recommander à un ami"?Inclusion page externe
Javascript + probleme lors du chargement d'une pageRecuperer un nombre avec clavier matriciel 12 Touches
Comment transformer un contenu en nombre?Nombre en caractère
[ASM-Nasm] Problème de comparaison nombre[AJAX PHP]Rediriger dossiers d'un domaine vers la page d'accueil
Plus de sujets relatifs à : afficher un nombre limité de produit par page


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR