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