Ajouter un commentaire

willbback

Bonjour,
Mais non, le problème est tout simple. Tu utilises 2 sorte de parcours des résultats de ta requête. Du coup, tu as généré des incohérences involontaires.
Je m'explique :

    Soit tu utilise "rs.absolute(i); " pour accéder à un enregistrement précit avec une variation de i, c'est ce que tu a fait. Soit tu utilise "rs.next();" ce que tu as fait également.
"rs.next()" fait avancé le curseur d'un enregistrement, malheureusement, tu rappel l'enregistrement avec la position absolue. Voilà pourquoi tu as des doublons.
Enlève ce "rs.next()", je pense que ça iras beaucoup mieux....
Voilà le code corrigé :
<p align="center"> <font face="Broadway" size ="3"><select name="codetype"> 
<%String type = request.getParameter("type_produit"); 
String libelle = request.getParameter("libelle");%> 
   <option value=<%=type%>><%=libelle %></option> 
   <%Class.forName("com.mysql.jdbc.Driver"); 
   Connection con = DriverManager.getConnection("jdbc:mysql://localhost/projet", "root", "mysql"); 
   Statement st = con.createStatement(); 
   ResultSet rs = st.executeQuery("SELECT libelle, codetype FROM type;"); 
   rs.last(); 
   int nb=rs.getRow(); 
   rs.beforeFirst(); 
   int i = 1; 
   String code = new String(); 
   String lib = new String(); 
   while(i<=nb){ 
      rs.absolute(i); 
      if(rs.getString(2).equals(type)==false){ 
         code = rs.getString(2); 
         lib = rs.getString(1); 
      }%> 
   <option value=<%=code%>><%=lib %> 
   <%i++; 
   }%> 
  </option></select></font></p>

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 H  H  PPPP   H  H   SSS   Y   Y 
H H P P H H S Y Y
HHHH PPPP HHHH SSS Y
H H P H H S Y
H H P H H SSSS Y