IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

[ JSP ] Formulaire tres dynamique avec base de données.


Sujet :

Servlets/JSP Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut [ JSP ] Formulaire tres dynamique avec base de données.
    Bonjour,

    Dans le cadre d'un stage, je doit developper un application en J2EE (JSP/Servlet sur serveur Tomcat et base de donné MySQL). C'est un application de gestion d'entreprise. Et je precise aussi que je suis debutant dans le domaine..

    Dans un des formulaire, j'ai une combobox (un select) contenant le nom des clients present dans la base de données (et il peut y en avoir beaucoup), ainsi que des champ qui permettent d'afficher les infos du client selectionné.
    En gros, des qu'on selectionne un client dans le select, les autre champs doivent se completer automatiquement avec les infos du client selectionné (infos contenu dans la base de données bien entendu).

    J'ai deja reussi a faire ca, via un javascript et du code java, et ca marche tres bien, mais le probleme etant que en faite, ca re-parcours integralement la base de données au chargement de la page, du coup, la page met du temps a se charger si le nombre de client devient consequent. Voila le code du javascript qui est appelle sur le onChange du select, pour vous donner une idée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    function afficheInfosClient(select)
    		{
    			<%
                            //requête permettant de récupérer les infos des clients de la base
                            ResultSet rs3 = stmt.executeQuery("SELECT id_tiers FROM tiers WHERE (tiers.id_type='3' OR tiers.id_type='2')"); 
                            while (rs3.next())
                            {
                                    int idClient = rs3.getInt("id_tiers");
                                    %>
    				if (select.value=="<%= idClient %>")
    				{
    					<%
                                            Connection_base con2 = new Connection_base();
                                            Statement stmt2 = con2.retourne_statement();
                                            ResultSet rs4 = stmt2.executeQuery("SELECT titre_tiers, nom_tiers, prenom_tiers, rue_tiers, cp_tiers, ville_tiers FROM tiers WHERE id_tiers ="+idClient);
                                            rs4.next();
                                            String titreClient = rs4.getString(1);
                                            String nomClient = rs4.getString(2);
                                            String prenomClient = rs4.getString(3);
                                            String adresseClient = rs4.getString(4);
                                            String cpClient = rs4.getString(5);
                                            String villeClient = rs4.getString(6);
                                            %> 
    					document.form_client.titre_client.value ="<%=titreClient%>";
    					document.form_client.nom_client2.value ="<%=nomClient%> <%=prenomClient%>";
    					document.form_client.rue.value ="<%=adresseClient%>";
    					document.form_client.cp.value ="<%=cpClient%>";
    					document.form_client.ville.value ="<%=villeClient%>";
    					}
    			<%}%>
    		}
    Mon probleme est que mon responsable est moyennement satisfait par cette solution, et prefererai en faite qu'a chaque fois qu'on selectionne un client dans le select, a ce moment la, la requete a la base de données serai effectué ainsi que l'affichage des infos dans les champ, pour eviter que la page mette trop de temps a se charger.

    Voila, donc je me demande comment je pourrai faire cela avec les JSP?? Mon responsable m'a parler d'AJAX, mais je connais pas vraiment, et ca m'a pas l'air bien simple a utiliser, alors qu'il existe peut etre un truc prevu pour ca avec JSP...

    Merci d'avance pour vos reponse.

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    AJAX est sans doute la bonne solution. A moins de mettre tes informations en session et de ne recharger à partir de la base de données que les informations liées à la sélection (mais dans tout les cas, ca fera un aller retour serveur).

    Tu devrais trouver ton bonheur ici : http://ajaxtags.sourceforge.net/

  3. #3
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    Je suis d'accord avec Ricky pour ce qui est de l'Ajax.
    Pour fournir un peu de détails, le principe sera le suivant :
    Tu auras une JSP contenant ta combo et une div dans laquelle seront imbriquées les info concernant le client selectionné (les champs d'affichage). Comme au départ tu n'as pas d'info, ta div est vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="infoClient"></div>
    Tu charges ta combo comme habituellement. sur l'evenement onchange, tu appeles une fonction JS qui contacte le serveur via le XMLHttpRequest ou ActiveXObject, qui récupere les info et les formalise (crée la structure HTML de l'interieur de ton div).
    Ca evite ainsi de recharger la page et c'est vraiment beaucoup plus rapide (et tres simple à mettre en oeuvre )
    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java
    "La liberté de tout être s'arréte là où commence celle de l'autre... Respecter l'autre, c'est préserver sa liberté d'être, de penser et de vivre"

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Oki, je vais donc essayer ca avec AJAX.
    thx pour vos reponse.

    EDIT : j'ai oublier de vous tenir au courant, mais ca marche impec en utilisant AJAX, thx. J'ai mis le temps, mais ca marche. Reste encore a regle le problemes des & qui passent pas dans le XML...

Discussions similaires

  1. liaison formulaire asp.net avec base de données
    Par 09182416 dans le forum Accès aux données
    Réponses: 0
    Dernier message: 18/03/2015, 23h15
  2. Jtable dynamique avec base de données
    Par sisi37 dans le forum Composants
    Réponses: 5
    Dernier message: 17/10/2008, 16h01
  3. listes dynamiques avec base de données
    Par divad dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 17/07/2008, 14h36
  4. Réponses: 2
    Dernier message: 10/07/2007, 08h45
  5. Créer des pages dynamiques PHP avec base de données
    Par noobspower dans le forum Langage
    Réponses: 8
    Dernier message: 13/02/2007, 08h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo