signori ho una pagina .jsp che presi dei campi da un form deve aggiornare lo stesso campo nella stessa tabella su X righe. ho buttato giu questo codice:
Codice PHP:
<%@page import="java.sql.*"%>
<%@page import="java.sql.*"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%//Per prima cosa controllo che l'utente abbia effettivamente i diritti di cambiare password altrimenti lo rimando alla home
String tipologiaProfilo = (String)session.getAttribute("tipologiaProfilo");
if(tipologiaProfilo == null || !tipologiaProfilo.equals("addetto amministrativo")){
response.sendRedirect("http://localhost:8080/progBDE/index.jsp");
} //fine verifica
%>
<%
//inizializzo le variabili get e post
String codiceVendita = request.getParameter("codVendita");
String capacita = request.getParameter("capacita");
String numeroBottiglie = request.getParameter("numeroBottiglie");
String codiceVino = request.getParameter("vino");
//faccio il parsing a int di numeroBottiglie per fare il confronto
int numBottScelto = Integer.parseInt(numeroBottiglie);
//dichiarazione variabili
int bottiglieDisponibili = 0;
int numeroBottiglieVendita = 0;
int count = 0;
int codiceBott = 0;%>
<%
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/progbde", "root", "coinisin");
Statement st = con.createStatement();
//cerco la quantità effettivamente disponibile di bottiglie di quel vino e di quella capacità
ResultSet rs = st.executeQuery("SELECT count(b.codiceBottiglia) FROM imbottigliamento as i, bottiglia as b WHERE i.codiceImbottigliamento = b.codiceImbottigliamento and b.vendita is null and i.codiceVino ='"+codiceVino+"' and b.capacita ='"+capacita+"' group by i.codiceVino");
//controllo che la capacità delle bottiglie sia stata specificata bene altrimenti rimando al form
if(!rs.first()){response.sendRedirect("http://localhost:8080/progBDE/panel/addAmmin/inserisciBottiglieVendita.jsp?codVendita="+codiceVendita+"&err=1");}
bottiglieDisponibili = rs.getInt(1);
if(numBottScelto > bottiglieDisponibili ){response.sendRedirect("http:localhost:8080/progBDE/panel/addAmmin/inserisciBottiglieVendita.jsp?codVendita="+codiceVendita+"&err=2");}
}
catch(SQLException e){ e.printStackTrace();}
catch(ClassNotFoundException e) { e.printStackTrace();}
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/progbde", "root", "coinisin");
Statement st = con.createStatement();
//prima trovo i codiceBottiglia delle bottiglie di quel vino e di quella capacità
ResultSet lista = st.executeQuery("SELECT b.codiceBottiglia FROM bottiglia as b, imbottigliamento as i WHERE i.codiceVino='"+codiceVino+"' and i.codiceImbottigliamento = b.codiceImbottigliamento and b.vendita is null and b.capacita ='"+capacita+"' LIMIT "+numBottScelto+"");
//inserimento della vendita alla bottiglia (update del campo vendita in bottiglia)
(****->)while(lista.next()){
codiceBott = lista.getInt(1);
int ins = st.executeUpdate("UPDATE bottiglia SET vendita='"+codiceVendita+"' WHERE codiceBottiglia='"+codiceBott+"'");
out.println(" codiceBott : "+codiceBott+"
");
}
//trovo la quantita di bottiglie della vendita
ResultSet rs3 = st.executeQuery("SELECT numeroBottiglie FROM vendita WHERE codiceVendita='"+codiceVendita+"'");
rs3.next();
numeroBottiglieVendita = rs3.getInt(1);
numeroBottiglieVendita = numeroBottiglieVendita+numBottScelto;
out.println("
numeroBottiglieVendita: "+numeroBottiglieVendita+"
");
st.executeUpdate("UPDATE vendita SET numeroBottiglie='"+numeroBottiglieVendita+"' WHERE codiceVendita='"+codiceVendita+"'");
}
catch(SQLException e){ e.printStackTrace();}
catch(ClassNotFoundException e) { e.printStackTrace();}
%>
<%
//redirect alla pagina di riepilogo della vendita
response.sendRedirect("http://localhost:8080/progBDE/panel/addAmmin/riepilogoVendita.jsp?codVendita="+codiceVendita+"");
%>
in pratica il
Codice PHP:
while(lista.next())
che dovrebbe scorrere i codiceBott e con quelli eseguire la query di update ad ogni iterazione un diverso codiceBott esce alla prima iterazione!. se provo a togliere l'istruzione executeUpdate e faccio solo un
Codice PHP:
out.println(codiceBott);
me li stampa tutti , solo con l'istruzione executeUpdate si blocca alla prima iterazione.
Avete qualche suggerimento per farlo funzionare? un altro modo per fare la stessa cosa?
vi ringrazio gia da ora