Formulaire, base de données et servlet

cs_Angelina38 Messages postés 30 Date d'inscription samedi 13 novembre 2004 Statut Membre Dernière intervention 5 juillet 2006 - 28 mai 2005 à 08:33
pikamo Messages postés 34 Date d'inscription dimanche 21 mars 2010 Statut Membre Dernière intervention 21 novembre 2012 - 22 mai 2012 à 12:17
Bonjour,

Je travaille actuellement avec jbuilder et Tomcat. Dans un premier temps, j'ai réalisé un formulaire en html qui doit renseigner les champs d'une des tables

Voici le code de mon formulaire :

<html>
<head>
<title>Untituled Document</title>
<meta http-equiv= "Content-Type" content="text/html; charset=iso-8859-1">
</head>



Identifiez vous


&nbsp;

<form name ="ident2" method="post"
action="http://127.0.0.1:8080/">

identifiant :


nom :

prénom :

adresse1 :

adresse2 :

code postal :

ville :

</form>
</html>

La base de données à d'abord était sur Easyphp avec PhpAdmin. la base se nomme luna et la table stagiaire Et ensuite mis dans le fichier des servlets :

Voici le code de la servlet qui a pour but de réxupérer les info du formulaire et les enregistrer dans la table comme nouvel enregistrement:


package basededonnees;


import java.sql.*;


import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;


public class EnregInfos extends HttpServlet {


public Connection con;//connexion à la basse de données
public String maRequeteSql ="";//la requête SQL à exécuter
public String driver;// pilote de la base de données
protected String url;// accès à la base de données
public ResultSet monResultSet=null; // l'objet qui récupére le résultat de la requete SQL
public Statement stmt=null;//l'objet statement pour atttaquer la base de données
public ResultSetMetaData rsmd=null;// les meta données sur la table
public int Enregistrement;



public void doPost(HttpServletRequest req, HttpServletResponse res){
res.setContentType("text/html");
//variable pour récupérer l'information dans le formulaire
String id ="";
String nom ="";
String prenom ="";
String adresse1="";
String adresse2="";
String codepostal="";
String ville ="";
// entete
try{
PrintWriter out=res.getWriter();
// récupérer la valeur saisie
id = req.getParameter("idStagiaire");
nom =req.getParameter("nom");
prenom=req.getParameter("prenom");
adresse1=req.getParameter("adr1");
adresse2=req.getParameter("adr2");
codepostal=req.getParameter("codePostal");
ville=req.getParameter("ville");


out.println("<HTML>");
out.println("");
out.println("
Les informations ont bien été transmises au serveur luno");
out.println("");
out.println("</HTML>");


// accés à la base de données
url = "jdbc:mysql://localhost//luna?user=root&password=";
//pilote natif de la base de données
driver="org.gjt.mm.mysql.Driver";
//1.génération d'une connection
Class.forName(this.driver).newInstance();
con = DriverManager.getConnection(url);
//2.objet Statement pour accéder à la base de données
this.stmt=con.createStatement();
//3. Objet du résultat de la requete



maRequeteSql = "INSERT INTO stagiaire(idStagaire, nom, prenom, adr1, adr2, codePostal, ville)";
maRequeteSql += "VALUES ('+id+', '+nom+', '+prenom+', '+adresse1+', '+adresse2+', '+codepostal+', '+ville+')";


this.Enregistrement=stmt.executeUpdate(maRequeteSql);



// Fermeture de la connexion à la bdd
this.con.close();
}
catch (SQLException e){ //Les exceptions SQL
System.out.println(e.getMessage());
while((e=e.getNextException())!=null){
System.out.println("erreur SQL:"+e.getMessage());


}
}


catch(Exception ex){
System.out.println("erreur :"+ex);
}
}
}
Et je ne comprends pas pourquoi rien ne s'enregistre nul part ? Y a t il des erreurs dans le code ?
Un grand merci par avance

5 réponses

cs_sim51 Messages postés 240 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 31 décembre 2006 2
28 mai 2005 à 15:19
Salut,

alors j'ai plusieurs questions :

1-

// accés à la base de données

url = "jdbc:mysql://localhost//luna?user=root&password=";

pourquoi y'a t'il deux // après localhost ? de plus ton serveur bdd ne travail pas sur un port particulier ??

Moi j'utilise postgresql et je fais : jdbc:postgresql://localhost:5432/AAEIMA?user=sim51&password=sim51
2-

Moi pour prendre mes paramètre je fais request.getParameter et non pas req.getParameter



Voilà, j'espère que cela va t'aider

a++


N'oubliez pas de cliquer sur réponse acceptée si la réponse vous convient !!!
0
cs_sim51 Messages postés 240 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 31 décembre 2006 2
28 mai 2005 à 18:09
Re salut angelina38,
Alors tout d'abord un forum c'est fait pour suivre les réponse aux questions donc mets ici tes réactions au lieu de m'envoyer un message :p
sinon j'ai un petit problème avec ta requête sql :

maRequeteSql = "INSERT INTO stagiaire(idStagaire, nom, prenom, adr1, adr2, codePostal, ville)";
maRequeteSql += "VALUES ('+id+', '+nom+', '+prenom+', '+adresse1+', '+adresse2+', '+codepostal+', '+ville+')";

1- pourquoi avoir séparé les deux ?
2- maRequeteSql = "INSERT INTO stagiaire(idStagaire, nom, prenom, adr1, adr2, codePostal, ville) VALUES ('" + id + "','" + nom + "','" + prenom +"','" + adresse1 + "','" + adresse2 + "','" + codepostal + "','" + ville + "')"
Cela me semble mieux car quand tu fais "VALUES ('+id+'...)" tu ouvres les " et tu les fermes à la fin, mais ce qu'il y a à l'interieur n'est pas remplacé.
Cependant je ne comprend pas pourquoi dans ta bdd il y a pas écrit +id+

Bon voilà.



N'oubliez pas de cliquer sur réponse acceptée si la réponse vous convient !!!
0
cs_Angelina38 Messages postés 30 Date d'inscription samedi 13 novembre 2004 Statut Membre Dernière intervention 5 juillet 2006
29 mai 2005 à 09:33
Salut,

je ne comprends pas ce que tu veux dire lorsque tu dis cette phrase ":Cependant je ne comprend pas pourquoi dans ta bdd il y a pas écrit +id+"

package basededonnees;


import java.sql.*;


import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;


public class EnregInfos extends HttpServlet {


public Connection con;//connexion à la basse de données
public String maRequeteSql ="";//la requête SQL à exécuter
public String driver;// pilote de la base de données
protected String url;// accès à la base de données
public ResultSet monResultSet=null; // l'objet qui récupére le résultat de la requete SQL
public Statement stmt=null;//l'objet statement pour atttaquer la base de données
public ResultSetMetaData rsmd=null;// les meta données sur la table
public int Enregistrement;



public void doPost(HttpServletRequest request, HttpServletResponse res){
res.setContentType("text/html");
//variable pour récupérer l'information dans le formulaire
String id ="";
String nom ="";
String prenom ="";
String adresse1="";
String adresse2="";
String codepostal="";
String ville ="";
// entete
try{
PrintWriter out=res.getWriter();
// récupérer la valeur saisie
id = request.getParameter("idStagiaire");
nom =request.getParameter("nom");
prenom=request.getParameter("prenom");
adresse1=request.getParameter("adr1");
adresse2=request.getParameter("adr2");
codepostal=request.getParameter("codePostal");
ville=request.getParameter("ville");


out.println("<HTML>");
out.println("");
out.println("
Les informations ont bien été transmises au serveur luno");
out.println("");
out.println("</HTML>");


// accés à la base de données
url = "jdbc:mysql://localhost/luno?user=root&password=";//pilote natif mysql
//pilote natif de la base de données
driver="org.gjt.mm.mysql.Driver";
//1.génération d'une connection
Class.forName(this.driver).newInstance();
con = DriverManager.getConnection(url);
//2.objet Statement pour accéder à la base de données
Statement stmt=con.createStatement();
//3. Objet du résultat de la requete


maRequeteSql = "INSERT INTO stagiaire(idStagaire, nom, prenom, adr1, adr2, codePostal, ville) VALUES ('" + id + "','" + nom + "','" + prenom +"','" + adresse1 + "','" + adresse2 + "','" + codepostal + "','" + ville + "')";


this.Enregistrement=stmt.executeUpdate(maRequeteSql);



// Fermeture de la connexion à la bdd
this.con.close();
}
catch (SQLException e){ //Les exceptions SQL
System.out.println(e.getMessage());
while((e=e.getNextException())!=null){
System.out.println("erreur SQL:"+e.getMessage());


}
}


catch(Exception ex){
System.out.println("erreur :"+ex);
}
}
}


Meme en remplacant, cela ne s'affiche pas dans ma base de données. Merci d'avance.
0
cs_gattous Messages postés 100 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 7 octobre 2007
3 juin 2005 à 18:49
action= "http://127.0.0.1:8080/"?
ta servlet a pour url "/"? t'es sur d'avoir bien configuré ta servlet
ds le fichier web.xml? si la réponse est non je te propose ceci :

ds "web.xml" ajouter ces lignes :

<servlet>

<servlet-name>enregistre</servlet-name>

<servlet-class>basededonnees.EnregInfos</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>enregistre</servlet-name>

/enregistre

</servlet-mapping>



et ds le formulaire html a la place de l'ancienne ligne placer :

action ="enregistre"



j'espere ke ça marchera pour toi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pikamo Messages postés 34 Date d'inscription dimanche 21 mars 2010 Statut Membre Dernière intervention 21 novembre 2012
22 mai 2012 à 12:17
0
Rejoignez-nous