[JSP]Parcourir une base de données

Parcourir une base de données [JSP] - Java - Programmation

Marsh Posté le 24-02-2005 à 16:15:28    

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  :)
 
 
 

Reply

Marsh Posté le 24-02-2005 à 16:15:28   

Reply

Marsh Posté le 24-02-2005 à 17:14:19    

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
Reply

Marsh Posté le 24-02-2005 à 18:48:36    

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.

Reply

Marsh Posté le 24-02-2005 à 19:03:40    

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...

Reply

Marsh Posté le 24-02-2005 à 19:27:19    

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..

Reply

Marsh Posté le 26-02-2005 à 13:27:18    

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...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed