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 :

Liste déroulante avec mysql et jsp


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Points : 91
    Points
    91
    Par défaut Liste déroulante avec mysql et jsp
    Bonjour tout le monde ,

    Voila j'ai un probléme avec mon scripte car je veux lister un champ d'une table de ma base mysql sur mon formulaire mais il me renvoie une erreur voici mon code:
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <%
    public static void main(String[] args)
    {
                    //try block for sql exceptions
            try
            {
                            //create driver - ALTER TO SUIT YOUR DRIVER/ DBMS
                    Class.forName("com.mysql.jdbc.Driver").newInstance(); 
     
                            //database connection code - ENTER YOUR DETAILS
                    String username = "root";
                    String password = "admin";
     
                            //URL - ALTER TO CONNECT TO YOUR DATABASE
                    String dbURL = "jdbc:mysql://localhost/sms?user="
                            + username + "&password=" + password;
     
                            //create the connection - ALTER FOR YOUR DBMS
                    java.sql.Connection myConnection =
                            DriverManager.getConnection(dbURL);
     
                            //create statement handle for executing queries
                    Statement stat = myConnection.createStatement();
     
            }
            catch( Exception E )
            { System.out.println( E.getMessage() ); }
    }
    String selectQuery = "Select nom_canal from short_numbers";
    //get the results
    ResultSet results = stat.executeQuery(selectQuery);
    //output the results
    while (results.next())
    {
            String nom_canal=results.getString("nom_canal");
            //example - column is called 'firstname'
    out.println("<option>" +
            results.getString("nom_canal")+"</option>");
    }
     
    %>
    et voici l'erreur qu'il envoie:
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    description Le serveur a rencontr� une erreur interne () qui l'a emp�ch� de satisfaire la requ�te.
     
    exception 
     
    org.apache.jasper.JasperException: Impossible de compiler la classe pour la JSP: 
     
    Une erreur s'est produite � la ligne: 249 dans le fichier jsp: /stat-pseudo.jsp
    void is an invalid type for the variable main
    246:                  <select name="nom_canal">
    247:                  <option value="0">-Choisir salon-</option>
    248: <%
    249: public static void main(String[] args)
    250: {
    251:            //try block for sql exceptions
    252:    try
     
     
    Une erreur s'est produite � la ligne: 249 dans le fichier jsp: /stat-pseudo.jsp
    Syntax error on token "(", ; expected
    246:                  <select name="nom_canal">
    247:                  <option value="0">-Choisir salon-</option>
    248: <%
    249: public static void main(String[] args)
    250: {
    251:            //try block for sql exceptions
    252:    try
     
     
    Une erreur s'est produite � la ligne: 249 dans le fichier jsp: /stat-pseudo.jsp
    Syntax error on token ")", ; expected
    246:                  <select name="nom_canal">
    247:                  <option value="0">-Choisir salon-</option>
    248: <%
    249: public static void main(String[] args)
    250: {
    251:            //try block for sql exceptions
    252:    try
     
     
    Une erreur s'est produite � la ligne: 278 dans le fichier jsp: /stat-pseudo.jsp
    stat cannot be resolved
    275: }
    276: String selectQuery = "Select nom_canal from short_numbers";
    277: //get the results
    278: ResultSet results = stat.executeQuery(selectQuery);
    279: //output the results
    280: while (results.next())
    281: {
     
     
    Stacktrace:
            org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
            org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
            org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:423)
            org.apache.jasper.compiler.Compiler.compile(Compiler.java:317)
            org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
            org.apache.jasper.compiler.Compiler.compile(Compiler.java:282)
            org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
            org.apache.jasper.servlet.JspServletWrapper.service
    Merci de bien vouloir m'aider

  2. #2
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Bonjour,

    Dans ta scriptlet, tu as une méthode main? j'ai jamais vu ça et je dois t'avouer que je ne pense pas que cela soit possible.
    Donc, enlèves déjà cette méthode qui n'a rien à faire dans une JSP.
    Ensuite, le java, ce n'est pas du PHP, on évite au maximum d'avoir de la logique métier directement dans la partie présentation. C'est à dire que ta connexion à la base devrait plutôt se trouver (au pire) dans ta servlet.
    Une solution serait, dans ta servlet, tu fais ta connexion, tu construits une liste de résultats que tu places ensuite dans le scope request (request.setAttribut("maListe",laCollectionQueTuAsCree)) et après dans ta JSP, tu récupères cette liste pour construire ton rendu HTML.

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Points : 91
    Points
    91
    Par défaut
    Mrci d'avoir répondu ,

    En fait j ai éffectué des changement comme suit :
    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
    32
    33
    34
    35
    try
    	{
    			//create driver - ALTER TO SUIT YOUR DRIVER/ DBMS
    		Class.forName("com.mysql.jdbc.Driver").newInstance(); 
     
    			//database connection code - ENTER YOUR DETAILS
    		String username = "root";
    		String password = "admin";
     
    			//URL - ALTER TO CONNECT TO YOUR DATABASE
    		String dbURL = "jdbc:mysql://localhost/sms?user="
    			+ username + "&password=" + password;
     
    			//create the connection - ALTER FOR YOUR DBMS
    		java.sql.Connection myConnection =
    			DriverManager.getConnection(dbURL);
     
    			//create statement handle for executing queries
    		Statement stat = myConnection.createStatement();
     
    String selectQuery = "Select nom_canal from short_numbers";
    //get the results
    ResultSet results = stat.executeQuery(selectQuery);
    //output the results
    while (results.next())
    {
    	String nom_canal=results.getString("nom_canal");
    	//example - column is called 'firstname'
    out.println("<option value=\"" + results.getString("nom_canal")+ "\">" + results.getString("nom_canal") + "</option>");
    }
    }
    catch (Exception e)
    {
        // ... on traite l'exception si besoin ...
    }
    il renvoie plus d'erreur mais il n'afiche pas de liste déroulante

  4. #4
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Bien, pourrais tu fournir ta pile d'exception qu'on y jete un œil

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Points : 91
    Points
    91
    Par défaut
    Pas d'erreur (exception) mais le probleme est que j'ai pas ma liste déroulante juste choisir un canal

  6. #6
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Autant pour moi, par contre, est ce sur qu'il y a des données au moins quand tu fais ton Select nom_canal from short_numbers sur la base "sms"?

  7. #7
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Points : 91
    Points
    91
    Par défaut
    Oui il y a des données sur la base sms quand je Select nom_canal from short_numbers;

  8. #8
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Points : 91
    Points
    91
    Par défaut
    Personne pour m'aider à résoudre mon probléme !!!!!!!!!!!!!!

  9. #9
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Désolé, j'avais oublié de te répondre.
    Je t'avais déjà proposé une solution, c'est à dire remonter la connexion au niveau de ta servlet et envoyer le résultat dans ta jsp sous forme d'une liste.
    Ceci permet de débugguer facilement ton appli en posant un point d'arret dans ta servlet pour étudier son déroulement.

    Sinon, si tu veux continuer dans la jsp comme tu fais. Tu peux quand même utiliser une liste du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <% List<String> listResult = new ArrayList<String>();
    try {
     //connexion
     // query
    while (results.next()) {
     listResult.add(results.getString("nom_canal"));
     }
    } catch (Exception e) {}
    %>
    Puis un truc du style (faisable plus simplement avec les tags de la JSTL si ca t'interesse de chercher un peu)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <% for(String result : listResult) { %>
       <option value="<%=result%>"><%=result%></option>
    <% } %>
    Voilou, en esperant que ça t'aidera

  10. #10
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Points : 91
    Points
    91
    Par défaut
    Merci zorm,
    Je vais tester votre solution apres je vous dirai le resultat.

  11. #11
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 288
    Points : 91
    Points
    91
    Par défaut
    Youpiiiiii ca marche merci beaucoup zorm

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création d'une liste déroulante avec servlet+jsp+mysql
    Par sarita25 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 13/05/2009, 19h00
  2. [MySQL] 2 listes déroulantes avec php et mysql
    Par SHERPAE dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/12/2007, 13h04
  3. listes déroulantes avec mysql
    Par SHERPAE dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 19/12/2007, 11h02
  4. 4 listes déroulantes avec MySQL
    Par briiice dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 06/01/2006, 10h18
  5. liste déroulante avec données mysql
    Par fab44 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/02/2005, 19h45

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