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

AJAX Discussion :

[AJAX] lié une liste a deux champs texte


Sujet :

AJAX

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 153
    Points : 29
    Points
    29
    Par défaut [AJAX] lié une liste a deux champs texte
    Bonjour,

    J'ai une liste déroulante suivant la valeur selectionner, elle complète deux champ texte. Pour ce faire j'ai 3 fichier

    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    <td>
    <select name = "ccs" id = "ccs" style="width : 70px" onchange="getCcs(this)"/>
    <option value = -1>----CCS----</option>
    <%
    	DBConnexion dbc_ccs = new DBConnexion();
    	String sql_ccs = "SELECT num_ccs FROM ccs", num_ccsBfr;
    	ResultSet resultat_ccs = dbc_ccs.recupereRequete(sql_ccs);
    	while(resultat_ccs.next())
    	{
    		num_ccsBfr = resultat_ccs.getString("num_ccs");
    		out.print("<option value=" + num_ccsBfr + ">" + num_ccsBfr + "</option>");
    	}
    	dbc_ccs.closeConnexion();
    %>
    </select>
    </td>
    <script language="javascript">
    	function getCcs(ccs)
    	{
    		traitementNomCcs(ccs);
    		traitementCdFinancier(ccs);
    	}
     
    	function recupererXhr()
    	{
    		var xhr = null;
    		if(window.XMLHttpRequest) { // Firefox et autres 
    			xhr = new XMLHttpRequest();
    		} else if(window.ActiveXObject) { // Internet Explorer 
    			try {
    				xhr = new ActiveXObject('Msxml2.XMLHTTP');
    			} catch (e) {
    				xhr = new ActiveXObject('Microsoft.XMLHTTP');
    			}
    		} else {
    			// XMLHttpRequest non supporté par le navigateur 
    			alert('Votre navigateur ne supporte pas les objets XMLHTTPRequest');
    		}
    		return xhr;
    }
     
    function traitementNomCcs(ccs)
    {
    	var xhr = recupererXhr();
    	if(xhr) {
    		xhr.open('GET', '/application/envoyerTraitementNomCcs.jsp?type=' + ccs, true);
    		xhr.onreadystatechange = function() {
    			document.getElementById('nomCcs').innerHTML = xhr.responseText;
    		};
    	xhr.send(null);
    	}
    }
    function traitementCdFinancier(ccs)
    {
    	var xhr = recupererXhr();
    	if(xhr) {
    		xhr.open('GET', '/application/envoyerTraitementCdFinancier.jsp?type=' + ccs, true);
    		xhr.onreadystatechange = function() {
    			document.getElementById('codeFinancier').innerHTML = xhr.responseText; 
    		};
    		xhr.send(null);
    	}
    }
    </script>
     
    <td>
    <input type = "text" id ="nomCcs" name = "nomCcs" readonly>
    </td>
    <td><input type = "text" name = "codeFinancier" size= "1" maxlength = "5"></td>
    Page EnvoyerTraitementNomCcs.jsp

    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
     
    <%
    	DBConnexion dbc_nomCcs = new DBConnexion();
    	String sql_nomCcs = "null", type_donnees = request.getParameter("type").replaceAll("'", "''"),name_donnees= "null";
    	if(type_donnees =="K3212C1" || type_donnees =="K3212C3" || type_donnees =="K3212C5" || type_donnees =="K3212C7") {
    		sql_nomCcs = "SELECT nom_agence FROM agence INNER JOIN ccs ON agence.id_agence = ccs.id_agence where num_ccs='" + type_donnees + "'";
    		name_donnees = "nom_agence";
    	} else if(type_donnees == "K3219O2" || type_donnees == "K3219CS") {
    		sql_nomCcs = "SELECT nom_pole FROM pole INNER JOIN ccs ON pole.id_pole = ccs.id_pole where num_ccs='" + type_donnees + "'";
    		name_donnees = "nom_pole";
    	}
    	ResultSet resultat_nomCcs = dbc_nomCcs.recupereRequete(sql_nomCcs);
    	if(resultat_nomCcs.isLast()) {
    		out.print(resultat_nomCcs.getString(name_donnees).replaceAll("\"", "\\\""));
    	}
    	dbc_nomCcs.closeConnexion();
    %>
    Page envoyerTraitementCdFinancier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <%
    	DBConnexion dbc_cdFinancier = new DBConnexion();
    	String sql_cdFinancier = "SELECT num_code_financier FROM ccs INNER JOIN code_financier ON ccs.id_cd_financ = code_financier.id_cd_financ WHERE num_ccs'" + request.getParameter("type").replaceAll("'", "''") + "'";
    	ResultSet resultat_cdFinancier = dbc_cdFinancier.recupereRequete(sql_cdFinancier);
    	if(resultat_cdFinancier.isLast()) {
    		out.print(resultat_cdFinancier.getString("code_financier").replaceAll("\"", "\\\""));
    	}
    	dbc_cdFinancier.closeConnexion();
    %>
    Voila le code que j'ai effectuer mais celui-ci me gère des erreur dans mes requète SQL. Ou peut-être, j'ai mal conçu mes pages, je sais pas.

    Merci

  2. #2
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Citation Envoyé par james23 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <td>
    <select name = "ccs" id = "ccs" style="width : 70px" onchange="getCcs(this)"/>
    Tu passes l'objet select, mais pas sa valeur...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onchange="getCcs(this.value)"

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 153
    Points : 29
    Points
    29
    Par défaut
    Ok je test ça de suite
    merci pour ta réponse rapide

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 153
    Points : 29
    Points
    29
    Par défaut
    Cela marche toujours pas,quand je test la reponse de l'ajax, je vois une erreur
    ORA-00920: operation relationnel non valide dans les deux pages de traitement

  5. #5
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Salut,

    Là on sort du domaine du javascript: la requête AJAX part bien, et j'imagine que la valeur envoyée dans le paramètre type est bien celle choisie dans la select box.
    Il n'est pas souhaitable que l'on poursuive ce thread pour parler java et requête SQL, il y a sur developpez.com des forums dédiés à ces sujets:


    Néanmoins, je peux te donner une piste (mais je n'irai pas plus loin):
    Dans EnvoyerTraitementNomCcs.jsp, tu testes l'égalité de String avec un == autrement dit l'égalité de pointeur. Tu dois passer par la méthode equals de string. Pour l'instant dans cette JSP, sql_ccs a toujours la valeur "null" à laquelle elle est initialisée.

    Quant à envoyerTraitementCdFinancier, il manque le symbole = avant la concaténation avec le paramètre type.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 153
    Points : 29
    Points
    29
    Par défaut
    Je me permet de revenir vers toi. Car pour moi, le coté JSP et AJAX marche bien puis qu'elle me retroune la bonne valeur. Maintenant le problème est que cette valeur ne s'insère pas dans son champs texte

    Voici le 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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    <td>
    <select name = "ccs" id = "ccs" style="width : 70px" onchange="getCcs(this)"/>
    <option value = -1>----CCS----</option>
    <%
    	DBConnexion dbc_ccs = new DBConnexion();
    	String sql_ccs = "SELECT num_ccs FROM ccs", num_ccsBfr;
    	ResultSet resultat_ccs = dbc_ccs.recupereRequete(sql_ccs);
    	while(resultat_ccs.next())
    	{
    		num_ccsBfr = resultat_ccs.getString("num_ccs");
    		out.print("<option value=" + num_ccsBfr + ">" + num_ccsBfr + "</option>");
    	}
    	dbc_ccs.closeConnexion();
    %>
    </select>
    </td>
    <script language="javascript">
    	function getCcs(ccs)
    	{
    		traitementNomCcs(ccs);
    		traitementCdFinancier(ccs);
    	}
     
    	function recupererXhr()
    	{
    		var xhr = null;
    		if(window.XMLHttpRequest) { // Firefox et autres 
    			xhr = new XMLHttpRequest();
    		} else if(window.ActiveXObject) { // Internet Explorer 
    			try {
    				xhr = new ActiveXObject('Msxml2.XMLHTTP');
    			} catch (e) {
    				xhr = new ActiveXObject('Microsoft.XMLHTTP');
    			}
    		} else {
    			// XMLHttpRequest non supporté par le navigateur 
    			alert('Votre navigateur ne supporte pas les objets XMLHTTPRequest');
    		}
    		return xhr;
    }
     
    function traitementNomCcs(ccs)
    {
    	var xhr = recupererXhr();
    	if(xhr) {
    		xhr.open('GET', '/application/envoyerTraitementNomCcs.jsp?type=' + ccs, true);
    		xhr.onreadystatechange = function() {
    			document.getElementById('nomCcs').innerHTML = xhr.responseText;
    		};
    	xhr.send(null);
    	}
    }
    function traitementCdFinancier(ccs)
    {
    	var xhr = recupererXhr();
    	if(xhr) {
    		xhr.open('GET', '/application/envoyerTraitementCdFinancier.jsp?type=' + ccs, true);
    		xhr.onreadystatechange = function() {
    			document.getElementById('codeFinancier').innerHTML = xhr.responseText; 
    		};
    		xhr.send(null);
    	}
    }
    </script>
     
    <td>
    <input type = "text" id ="nomCcs" name = "nomCcs" readonly>
    </td>
    <td><input type = "text" name = "codeFinancier" size= "1" maxlength = "5"></td>
    mes deux pages de traitement

    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
    <%
    	DBConnexion dbc_nomCcs = new DBConnexion();
    	String sql_nomCcs = "null", type_donnees = request.getParameter("type").replaceAll("'", "''"),name_donnees= "null";
    	if(type_donnees.equals("K3212C1") || type_donnees.equals("K3212C3") || type_donnees.equals("K3212C5") || type_donnees.equals("K3212C7")) {
    		sql_nomCcs = "SELECT nom_agence FROM agence INNER JOIN ccs ON agence.id_agence = ccs.id_agence where num_ccs='" + type_donnees + "'";
    		name_donnees = "nom_agence";
    	} else if(type_donnees.equals("K3219O2") || type_donnees.equals("K3219CS")) {
    		sql_nomCcs = "SELECT nom_pole FROM pole INNER JOIN ccs ON pole.id_pole = ccs.id_pole where num_ccs='" + type_donnees + "'";
    		name_donnees = "nom_pole";
    	}
    	ResultSet resultat_nomCcs = dbc_nomCcs.recupereRequete(sql_nomCcs);
    	if(resultat_nomCcs.next())
    	{
    			out.print(resultat_nomCcs.getString(name_donnees).replaceAll("\"", "\\\""));
    	}
    	dbc_nomCcs.closeConnexion();
    %>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <%
    	DBConnexion dbc_cdFinancier = new DBConnexion();
    	String sql_cdFinancier = "SELECT num_code_financier FROM ccs INNER JOIN code_financier ON ccs.id_cd_financ = code_financier.id_cd_financ WHERE num_ccs ='" + request.getParameter("type").replaceAll("'", "''") + "'";
    	ResultSet resultat_cdFinancier = dbc_cdFinancier.recupereRequete(sql_cdFinancier);
    	if(resultat_cdFinancier.next()) {
    		out.print(resultat_cdFinancier.getString("num_code_financier").replaceAll("\"", "\\\""));
    	}
    	dbc_cdFinancier.closeConnexion();
    %>

  7. #7
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // pas bien
    document.getElementById('codeFinancier').innerHTML = xhr.responseText; 
    // bien
    document.getElementById('codeFinancier').value = xhr.responseText;
    (c'est un input...)

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 153
    Points : 29
    Points
    29
    Par défaut
    ça marche merci

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/04/2014, 17h46
  2. [AJAX] Une liste sur deux est remplie seulement
    Par Woufeigh dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 07/06/2008, 15h08
  3. filtrer une zone de liste par deux champs
    Par lolothom dans le forum IHM
    Réponses: 5
    Dernier message: 15/10/2007, 10h24
  4. [AJAX] Lier une liste déroulant à un champ texte
    Par arnaudperfect dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 13/04/2007, 14h50
  5. Réponses: 5
    Dernier message: 15/09/2006, 16h13

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