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

  FORUM HardWare.fr
  Programmation
  Java

  [JSP]Parcourir une base de données

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JSP]Parcourir une base de données

n°992550
brethold
Posté le 24-02-2005 à 16:15:28  profilanswer
 

Salut à tous,
J'suis en train de tester le JSP car j'aime programmer en JAVA.
Cependant, j'ai un problème pour parcourir ma base de données Mysql en JSP. Le problème est tout bête, je n’arrive pas à faire une variable qui s'incrémente et se décrémente quand je clique sur mon menu fait en javascript.
 
Le menu est fait ainsi :
<table width="60%" cols="4" align="center">
  <tr>
   <td colspan="4"><hr width="100%" color="#7DFFA0"></td>
  </tr>
  <tr>
   <td align="center" valign="center">
 <div class="menu" onMouseOver='couleur(this,vert,bleu)' onMouseOut='couleur(this,bleu,vert)'  
   onClick='document.location="carnet.jsp?action=premier";'>&lt;&lt;</div>
   </td>
   <td align="center" valign="center">
    <div class="menu" onMouseOver='couleur(this,vert,bleu)' onMouseOut='couleur(this,bleu,vert)'
   onClick='document.location="carnet.jsp?action=precedent";'>&lt;</div>
   </td>
   <td align="center" valign="center">
 <div class="menu" onMouseOver='couleur(this,vert,bleu)' onMouseOut='couleur(this,bleu,vert)'
   onClick='document.location="carnet.jsp?action=suivant";'>&gt;</div>
   </td>
   <td align="center" valign="center">
 <div class="menu" onMouseOver='couleur(this,vert,bleu)' onMouseOut='couleur(this,bleu,vert)'
   onClick='document.location="carnet.jsp?action=dernier";'>&gt;&gt;</div>
   </td>
  </tr>
   
  <tr>
   <td colspan="4"><hr width="100%" color="#7DFFA0"></td>
  </tr>  
 </table>

 
 
Je fais donc un test a chaque passage pour voir l'opération demandée :
request.getParameter("action" ).
Ensuite, je fais appel une méthode pour plaser le ResultSet au bon endroit pour lire dans la base de données. Le code -->
String act = request.getParameter("action" );
    if (act.compareTo("premier" )==0)
 {
  debut();
 }
 if (act.compareTo("precedent" )==0)
 {
 
  precedent();
 
 
 }
 if (act.compareTo("suivant" )==0)
 {
   prochain();
   
 }
 if (act.compareTo("dernier" )==0)
 {
  positionFin();
 }

 
 
Le code des méthodes pour placer le ResultSet :
 

Code :
  1. public void debut()
  2. {
  3. try
  4. {
  5. curseur.first();
  6. }
  7. catch(SQLException E)
  8. {
  9. E.printStackTrace();
  10. erreur="SQLException: " + E.getMessage();
  11. }
  12. }
  13. public void positionFin()
  14. {
  15. try
  16. {
  17. curseur.last();
  18. }
  19. catch(SQLException E)
  20. {
  21. E.printStackTrace();
  22. erreur="SQLException: " + E.getMessage();
  23. }
  24. }
  25. public void prochain()
  26. {
  27. try
  28. {
  29. if( curseur.isLast() ) { ; }
  30. else{
  31. curseur.next();
  32. }
  33. }
  34. catch(SQLException E)
  35. {
  36. E.printStackTrace();
  37. erreur="SQLException: " + E.getMessage();
  38. }
  39. }
  40. public void precedent()
  41. {
  42. try
  43. {
  44. if( curseur.isFirst() ) { ; }
  45. else{
  46. curseur.previous();
  47. }
  48. }
  49. catch(SQLException E)
  50. {
  51. E.printStackTrace();
  52. erreur="SQLException: " + E.getMessage();
  53. }
  54. }


 
 
Finalement, je lis la position avec la méthode suivante :  
 

Code :
  1. public int getPosition()
  2. {
  3. int p=0;
  4. try
  5. {
  6. p = curseur.getRow();
  7. }
  8. catch(SQLException E)
  9. {
  10. E.printStackTrace();
  11. erreur="SQLException: " + E.getMessage();
  12. }
  13. if(p==0){ return p; }
  14. else{
  15. return  p-1;}
  16. }


 
Et dans mon code JSP je fais ca : pos = (String)lignes.get(position);
pour ensuite afficher l'element de la base de donnée.
 
Ça marche pour placer le curseur en début et a la fin mais pas pour suivant et précédent. Je ne sais pas comment faire pour placer une variable qui s'incrémente et se décrémente pour résoudre le problème.
Est-ce que je fais bien de parcourir les éléments de la base ainsi ou je devrai utiliser un autre moyen?
Mici pour vos réponses  :)
 
 
 

mood
Publicité
Posté le 24-02-2005 à 16:15:28  profilanswer
 

n°992622
rompi
Posté le 24-02-2005 à 17:14:19  profilanswer
 

poste pas ton code HTML dans la rublique "HTML/CSS/Javascript"
tu risque de te faire lincher!
 -pas de tableau a une ligne par colonne,
utilise ul li
 - pas d'évènement onMouseOver, onMouseOut, utilise css ( :hover )
 
pour ce qui est du java :
écrit plûtot if (act.equals("precedent" ))
que if (act.compareTo("precedent" )==0)
 
idem:
écrit plutôt:  
 
 

Code :
  1. if( !curseur.isLast() ) {
  2.     curseur.next();
  3.   }


que  
 

Code :
  1. if( curseur.isLast() ) { ; }
  2.      else{
  3.      curseur.next();
  4.   }


 
-----
Maintenant si j'ai bien compris ce que tu veux faire,
cela ne sert pas a gran chose car apparement tu selectionnes
tout et tu veux déplacer un curseur dans ta sélection...
pourquoi ne pas faire un LIMIT et un ORDER BY dans  
ta requêtre Sql ?
 
 
Bonne continuation


Message édité par rompi le 24-02-2005 à 17:15:17
n°992713
brethold
Posté le 24-02-2005 à 18:48:36  profilanswer
 

Merci pour tes conseils, je vais essayer de tout gérer par des requêtes SQL plutôt que de faire avancer le curseur (resultset). Cependant, j'avoue que ça aurait été plus simple de trouver une solution pour incrémenter un variable pour avancer et la décrémenter pour reculer. Enfin, c'est sûrement pasque j'suis un débutant en jsp et j'utilise des solutions peu appropriées.

n°992747
rompi
Posté le 24-02-2005 à 19:03:40  profilanswer
 

En fait,  
il faut que tu retiennes ta position actuelle,  
et que tu la passe en paramètre dans tes liens
 

Code :
  1. carnet.jsp?action=precedent&pos="+pos-1+"...
  2. carnet.jsp?action=suivant&"+pos=-1+"


 
et dans ta requête  

Code :
  1. limit pos,1


 
Ensuite, tu peux ajouter une variable pas, pour ne plus faire des pas de 1, mais de n...

n°992784
brethold
Posté le 24-02-2005 à 19:27:19  profilanswer
 

J'ai pas vraiment bien compris coment je pouvais récuperer la position sur le lien carnet.jsp?action=precedent&pos="+pos-1+"
Ensuite je vois pas coment l'expoiter avec limit pos,1
J'espere que ca te deranges pas de m'apporter quelques petites explications supplementaires..

n°994113
rompi
Posté le 26-02-2005 à 13:27:18  profilanswer
 

Tu récupères "pos" comme tu récupères action...
 

Code :
  1. String act = request.getParameter("action" );
  2. String pos = request.getParameter("pos" );


 
Ensuite tu le cast avec un new Integer(pos).intValue() pour faire plus ou moins un
 
et dans ta requete Sql
 

Code :
  1. String request = "select ... from ... order by ... limit "+pos+",1";


 
et après tu affiches tous ce que tu récupère dans ton ResultSet...


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

  [JSP]Parcourir une base de données

 

Sujets relatifs
[Access] Exporter des données en HTMLTrigger : Besoin d'une relecture avant de pourrir ma base...
Accès à la base de données par un utilisateurProblème selection base (débutante que je suis, aidez moi!!)
[JSP] Problem connexion à MysqlComment récupérer les données d'une application ACCESS ?
Pages d'accès aux données de access 2000[Oracle] Savoir sur quelle base on se trouve
Base de données en Ada ? 
Plus de sujets relatifs à : [JSP]Parcourir une base de données


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