La communauté ALL HTML c'est 60442 membres à ce jour dont 0 inscrits aujourd'hui et 5 depuis une semaine.

  • imprimer
  • aide

Forum de discussions « Autres langages (JAVA, JSP, etc.) »

Retrouvez les publications relatives à ces discussions dans nos rubriques Coldfusion, java, perl.

afficher un nombre limité de produit par page

liste des forums liste des discussions Participer à la discussion

Photo de chamardal Message publié le lundi 23 février 2009 à 23 h 20 par chamardal.
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
Photo de laruiss Message publié le mardi 24 février 2009 à 10 h 25 par laruiss.
Haaaaan, du code java dans les JSP... des propriétés non encapsulées...

Tu connais le MVC (Struts, JSF,...) ? et un framework d'ORM (hibernate, par exemple) ?

Bon, sinon, pour répondre directement, dans ta requête SQL, il te faut une clause LIMIT (avec un OFFSET) si tu utilises un moteur de base de données standard (MySQL, PostgreSQL), pour SQL Server, c'est un peu plus compliqué :
General : http://www.petefreitag.com/item/451.cfm
MySQL : http://dev.mysql.com/doc/refman/5.0/en/select.html#id2014599
PostgreSQL : http://www.postgresql.org/docs/7.3/static/queries-limit.html
SQL Server : http://joseph.randomnetworks.com/archives/2006/05/22/sql-server-equivalent-to-mysql-and-postgresql-limit-clause/

@+
Photo de chamardal Message publié le mardi 24 février 2009 à 22 h 08 par chamardal.
bonjour
merci laruiss pour la réponse et surtout pour les remarques, mais honnêtement je connai pas les langages que vous avez sité(s'ils sont des "langages" bsur);;
la solution d'utiliser la clause limit ne répond pas à mon besoin car la requete: select * from maTable limit 3; ne va afficher que seulement 3enregistrements,, alors un utilisateur comment peut-il passer aux suivants ou revenir aux précédents s'il y on a beaucoup d'enregistrements à voir??
si vous avez une solution n'hésitez pas,, merci
Photo de laruiss Message publié le mercredi 25 février 2009 à 21 h 35 par laruiss.
Hello, tu n'as pas bien lu mon message, tous les mots sont importants ;-)

je me cite :
une clause LIMIT (avec un OFFSET)
les deux mots importants sont en capitale, tu n'as pas fait attention au deuxième.

J'en déduis aussi que tu n'as pas lu une seule des 4 pages dont je t'ai donné des liens... et la première suffit (et elle n'est vraiment pas longue à lire).

Je cite :
Now suppose you wanted to show results 11-20. With the OFFSET keyword its just as easy, the following query will do:

SELECT column FROM table
LIMIT 10 OFFSET 10


donc toi si tu veux afficher les messages 1 à 3 :
SELECT * FROM maTable LIMIT 3

les messages 4 à 6 :
SELECT * FROM maTable LIMIT 3 OFFSET 3

les messages 7 à 9 :
SELECT * FROM maTable LIMIT 3 OFFSET 6

etc.
tu n'as plus qu'à passer l'offset en paramètre dans les liens "suivants" et "précédents".

@+

liste des forums liste des discussions Participer à la discussion

Vous devez obligatoirement vous identifier en tant que membre pour participer à cette discussion.

ACCÉS COMMUNAUTÉ

Rejoignez ALL HTML

Publiez vos articles, actualités, communiqués ... Donnez votre avis, partagez votre réseau, rencontrez d'autres membres et participez à la vie de la communauté.

Les 5 dernières discussions