Bonjour,
Je suis en stage en entreprise et je dois réaliser un projet, une appli web.
Cependant, je rencontre une difficulté... Voici mon code correspondant au problème :
classe ActionRéservation
public class ActionReservation implements Action{
private ADO ado = new ADO();
public String traiter(HttpServletRequest req, HttpServletResponse rep){
String qtite = req.getParameter("quantite");
try {
//quantité non renseignée
if(qtite.isEmpty()){
req.getSession().setAttribute("message", "Veuillez renseigner la quantité.");
//quantité à réserver supérieure au stock
}else if(ado.quantite(req, rep)<0){
req.getSession().setAttribute("message", "Le stock n'est pas suffisant pour supporter cette réservation.");
//réservation
}else{
ado.nouvellereservation(req, rep);
ado.retirestock(req, rep);
req.getSession().setAttribute("message", "Votre réservation a bien été effectuée.");
}
//gestion des erreures
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//deconnexion
try {
ado.deconnexion();
} catch (SQLException e) {
e.printStackTrace();
}
//résultat sur page JSP
return "resultat.jsp";
}
}
Fonctions correspondantes de la classe ADO
// RESERVATION PRODUITS
//création d'une reservation dans la base de données
public void nouvellereservation(HttpServletRequest req, HttpServletResponse rep){
try {
connexion();
Statement st = conn.createStatement();
st.executeQuery("INSERT INTO reservation(datedepart, dateretour, quantiteres, codesal, codetype, codeprod) values(curdate(), null, '"+req.getParameter("quantite")+"', 's002', '"+req.getParameter("codetype")+"', 'pc1');");
st.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//mise à jour du stock de produits due à la réservation
public void retirestock(HttpServletRequest req, HttpServletResponse rep) {
try {
connexion();
Statement stt;
stt = conn.createStatement();
stt.executeUpdate("UPDATE produit SET quantite=quantite-"+req.getParameter("quantite")+" WHERE code='pc1';");
stt.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//calcule si la quantite du stock est suffisante pour supporter la réservation
public int quantite (HttpServletRequest req, HttpServletResponse rep) throws SQLException, ClassNotFoundException{
connexion();
int max=0;
Statement st = conn.createStatement();
String type = req.getParameter("codetype");
ResultSet rs = st.executeQuery("SELECT SUM(quantite) FROM produit WHERE codetype ='"+type.toString()+"' GROUP BY codetype;");
if(rs.next()){
max = rs.getInt(1);
}
int z = Integer.parseInt(req.getParameter("quantite"));
max = max-z;
rs.close();
st.close();
return max;
}
Lorsque, dans mes pages web, je réserve un produit et que cette réservation remplie les critères, j'ai le message suivant : "Votre réservation a bien été effectuée." Donc ma réservation est censée avoir fonctionnée, mais quand je vérifie dans la base de données, il n'y a rien... Les fonctions "nouvelleréservation" et "retirestock" ne sont donc pas effectuée...
Je vous demande donc de m'aider à trouver pourquoi ces 2 fonctions sont oubliées par le programme ? Ca fait 2 jorus que je planche dessus...
PS : si des données sont entrées "en dur" dans les requête SQL, c'est normal
