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

JavaScript Discussion :

[AJAX] Listes liées avec Ajax


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 14
    Points : 5
    Points
    5
    Par défaut [AJAX] Listes liées avec Ajax
    Bonjour à tous,

    J'ai trois listes déroulantes :

    Comptes | Mules | Type

    Comptes m'affiche les mules ==> fonction gomules) Ok
    Mule devrait m'afficher les types ==> fonction gotype()

    J'ai limpression que la fonction gotype n'est pas appelée.
    Pourriez vous me dire si j'ai des erreurs car cela fait une semaine que je cherche et que je ne trouve pas. Merci davance de votre aide

    Ci dessous mes sources :

    Le fichier mesfonc.js
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    // Creation de l'objet XMLHttpRequest
    function getXhr()
    {
    	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..."); 
    		xhr = false; 
    	} 
    	return xhr;
    }
     
     
    /* Gestion de la liste déroulante des mules */
    function gomule()
    {
    	alert("gomule");
    	var xhrmule = getXhr();
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhrmule.onreadystatechange = function()
    	{
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhrmule.readyState == 4 && xhrmule.status == 200)
    		{
    			leselect = xhrmule.responseText;
    			// Ajoute les options a la liste via lid du div
    			document.getElementById('div_mule').innerHTML = leselect;
    		}
    	}
     
    	// Ici on va voir comment faire du post
    	xhrmule.open("POST","ajaxmules.php",true);
    	// ne pas oublier ça pour le post
    	xhrmule.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	// Poste les arguments ici le compte via l'id du select
    	var selcpte = document.getElementById('lst_cpte');
    	var cptesel = selcpte.options[selcpte.selectedIndex].value;
    	var data = "dcpte="+cptesel;
    	xhrmule.send(data);
    }
     
     
    /* Gestion de la liste déroulante des types */
    function gotype()
    {
    	alert("gotype");
    	var xhr = getXhr();
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhr.onreadystatechange = function()
    	{
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhr.readyState == 4 && xhr.status == 200)
    		{
    			leselecttype = xhr.responseText;
    			// Ajouter les options a la liste via l'id du div
    			document.getElementById('div_type').innerHTML = leselecttype;
    		}
    	}
     
    	// Ici on va voir comment faire du post
    	xhr.open("POST","ajaxtypes.php",true);
    	// ne pas oublier ça pour le post
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	// Poste les arguments le compte puis la mule via l'id du select
    	var selcpte = document.getElementById('lst_cpte');
    	var cptesel = selcpte.options[selcpte.selectedIndex].value;
     
    	var selmule = document.getElementById('lst_mule');
    	var mulesel = selmule.options[selmule.selectedIndex].value;
     
    	var datatype = "dcpte="+cptesel+"&dmule="+mulesel;
    	xhr.send(datatype);
    	alert(datatype);
    }
    Mon formulaire principal
    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
     
    <?php require_once('Connections/bqe_scl_hype.php'); ?>
    <?php mysql_select_db($database_bqe_scl_hype, $bqe_scl_hype); ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <script src="mesfonc.js" type="text/javascript"></script>
    <title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
    </head>
    	<body>
    		<form>
    			<fieldset style="width: 500px">
    				<legend>Liste liées</legend>
    				<label>Compte</label>
    				<select name="lst_cpte" id="lst_cpte" onchange="gomule()">
    					<option value="-1">Aucun</option>
    					<?php
                                                    $res = mysql_query("SELECT DISTINCT compte FROM t_inventaire_cpte");
                                                    while($row = mysql_fetch_assoc($res)){
                                                    echo "<option value='".$row['compte']."'>".$row['compte']."</option>";
                                                    }
                                            ?>
    				</select>
     
    				<label>Mules</label>
    				<div id="div_mule" style="display:inline">
    				<select name="lst_mule" id="lst_mule" onchange="gotype()">
    					<option value="-1">Choisir une mule</option>
    				</select>
    				</div>
     
    				<label>Type</label>
    				<div id="div_type" style="display:inline">
    				<select name="lst_type" id="lst_type">
    					<option value="-1">Choisir un type</option>
    				</select>
    				</div>
     
    			</fieldset>
    		</form>
    	</body>
    </html>
    le fichier ajaxtypes.php
    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
     
    <?php require_once('Connections/bqe_scl_hype.php'); ?>
    <?php mysql_select_db($database_bqe_scl_hype, $bqe_scl_hype); ?>
    <?php
            echo "<select name='lst_type'>";
            if(isset($_POST["dcpte"]) || (isset($_POST["dmule"]))
            {
                    $res = mysql_query("SELECT DISTINCT type FROM t_inventaire_cpte"
    //              . " WHERE compte = 'BKL3_3' AND mule= 'Mule 4' ORDER BY type";
                     . " WHERE compte = '".$_POST['dcpte']."' AND mule= '".$_POST['dmule']."' ORDER BY type";
                     while($row = mysql_fetch_assoc($res)){
                            echo "<option value='".$row["type"]."'>".$row["type"]."</option>";
                    }
            }
            echo "</select>";
    ?>
    le fichier ajaxmules.php
    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
     
    <?php require_once('Connections/bqe_scl_hype.php'); ?>
    <?php mysql_select_db($database_bqe_scl_hype, $bqe_scl_hype); ?>
    <?php
            echo "<select name='lst_mule'>";
            if(isset($_POST["dcpte"]))
            {
                    $res = mysql_query("SELECT DISTINCT mule FROM t_inventaire_cpte"
                     . " WHERE compte = '".$_POST["dcpte"]."' ORDER BY mule");
                    while($row = mysql_fetch_assoc($res)){
                            echo "<option value='".$row["mule"]."'>".$row["mule"]."</option>";
                    }
            }
            echo "</select>";       
    ?>

  2. #2
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut
    On peut voir tourner la chose ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Bonjour d-Rek,

    Désolé je n'ai pas mis en ligne mes modifications, pour le moment je travaille en local. Là je suis au boulot je mettrais en ligne ce soir à la maison.

    Peut être peux tu me mettre sur la voix sans voir le site.

    Merci à toi.

  4. #4
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut
    Bah j'aimerai utiliser mon débugger Javascript Favori pour remonter à la source du problème. Le débugger intégré à FF est suffisement efficace normalement pour que tu puisses identifier ton/tes problème(s).

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Re d-Rek,

    Voilà je viens de mettre en ligne.

    voici le lien :

    Mon site

    Il suffit de cliquer sur le bouton [test liste].

    Merci encore de ton aide.

  6. #6
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut
    Bonne nouvelle, RAS sous FF.
    Ton code source a l'air clean vu par le panda roux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    leselect = xhrmule.responseText;
    // Ajoute les options a la liste via lid du div
    document.getElementById('div_mule').innerHTML = leselect;
    Tu peux faire un alert(xhrmule.responseText); ? après ton document.getEl...
    Comme tu remplaces tout ton select avec les options j'ai peur que tu aies oublié ta balise <select> avec ton onchange... cf. ajaxmules.php ou ajaxtypes.php


    PS : pour économiser des char :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function $(id){return document.getElementById(id);}
    Comme ça tu remplaces tout tes "document.getElementById" par $
    Magique

  7. #7
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Re d-Rek,

    Encore une fois merci.

    1) Merci pour la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function $iddiv(id)
    {
    	return document.getElementById(id);
    }
    2) Effectivement j'ai oublié le onchange dans ajaxmules.php je l'ai ajouté :
    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
     
    <?php require_once('Connections/bqe_scl_hype.php'); ?>
    <?php mysql_select_db($database_bqe_scl_hype, $bqe_scl_hype); ?>
    <?php
            echo "<select name='lst_mule' id='lst_mule' onchange='gotype()'>";
            if(isset($_POST["dcpte"]))
            {
                    $res = mysql_query("SELECT DISTINCT mule FROM t_inventaire_cpte"
                     . " WHERE compte = '".$_POST["dcpte"]."' ORDER BY mule");
                    while($row = mysql_fetch_assoc($res))
                    {
                            echo "<option value='".$row["mule"]."'>".$row["mule"]."</option>";
                    }
            }
            echo "</select>";
            
    ?>
    Le problème maintenant c'est que j'ai une erreur [Parse error: syntax error, unexpected '{' in /ajaxtypes.php on line 6] sous IE.

    J'ai vérifié le fichier [ajaxtypes.php] mais je ne vois pas d'accolade manquante ou en trop.

    Sous Firefox pas d'erreur mais la liste [type] ne s'affiche pas. Ci dessous le fichier [ajaxtypes.php].
    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
     
    <?php require_once('Connections/bqe_scl_hype.php'); ?>
    <?php mysql_select_db($database_bqe_scl_hype, $bqe_scl_hype); ?>
    <?php
            echo "<select name='lst_type' id='lst_type'>";
            if(isset($_POST["dcpte"]) || (isset($_POST["dmule"]))
            {
                    $res = mysql_query("SELECT DISTINCT type FROM t_inventaire_cpte"
                     . " WHERE compte = '".$_POST['dcpte']."' AND mule= '".$_POST['dmule']."' ORDER BY type";
                     while($row = mysql_fetch_assoc($res))
                     {
                            echo "<option value='".$row["type"]."'>".$row["type"]."</option>";
                     }
            }
            echo "</select>";
    ?>
    J'ai utilisé firebug pour tester, mais je ne vois pas de bug. J'ai mis mes modifications en ligne.

    Ci dessous le fichier [mesfonc.js]
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    // Creation de l'objet XMLHttpRequest
    function getXhr()
    {
    	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..."); 
    		xhr = false; 
    	} 
    	return xhr;
    }
     
     
    /* Gestion de la liste déroulante des mules */
    function gomule()
    {
    	alert("gomule");
    	var xhrmule = getXhr();
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhrmule.onreadystatechange = function()
    	{
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhrmule.readyState == 4 && xhrmule.status == 200)
    		{
    			leselect = xhrmule.responseText;
    			// Ajoute les options a la liste via lid du div
    			//document.getElementById('div_mule').innerHTML = leselect;
    			$iddiv('div_mule').innerHTML = leselect;
    			alert("xhr.responseText de mule : "+xhrmule.responseText);
    		}
    	}
     
    	// Ici on va voir comment faire du post
    	xhrmule.open("POST","ajaxmules.php",true);
    	// ne pas oublier ça pour le post
    	xhrmule.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	// Poste les arguments ici le compte via l'id du select
    	var selcpte = document.getElementById('lst_cpte');
    	var cptesel = selcpte.options[selcpte.selectedIndex].value;
    	var data = "dcpte="+cptesel;
    	xhrmule.send(data);
    }
     
     
    /* Gestion de la liste déroulante des types */
    function gotype()
    {
    	alert("gotype");
    	var xhr = getXhr();
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhr.onreadystatechange = function()
    	{
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhr.readyState == 4 && xhr.status == 200)
    		{
    			leselecttype = xhr.responseText;
    			// Ajouter les options a la liste via l'id du div
    			//document.getElementById('div_type').innerHTML = leselecttype;
    			$iddiv('div_type').innerHTML = leselecttype;
    			alert("xhr.responseText de type : "+xhr.responseText);
    		}
    	}
     
    	// Ici on va voir comment faire du post
    	xhr.open("POST","ajaxtypes.php",true);
    	// ne pas oublier ça pour le post
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	// Poste les arguments le compte puis la mule via l'id du select
    	var selcpte = document.getElementById('lst_cpte');
    	var cptesel = selcpte.options[selcpte.selectedIndex].value;
     
    	var selmule = document.getElementById('lst_mule');
    	var mulesel = selmule.options[selmule.selectedIndex].value;
     
    	var datatype = "dcpte="+cptesel+"&dmule="+mulesel;
    	xhr.send(datatype);
    	alert(datatype);
    }
     
    function $iddiv(id)
    {
    	return document.getElementById(id);
    }
    En espérant avoir était clair dans mes propos. Un débutant qui te remercie encore une fois pour ton aide.

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Points : 217
    Points
    217
    Par défaut
    Coucou je crois que tu as oublié une parenthese au isset...

    Voila le code modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php require_once('Connections/bqe_scl_hype.php'); ?>
    <?php mysql_select_db($database_bqe_scl_hype, $bqe_scl_hype); ?>
    <?php
    	echo "<select name='lst_type' id='lst_type'>";
    	if(isset($_POST["dcpte"]) || (isset($_POST["dmule"])))
    	{
    		$res = //...
    Bonne continuation!

  9. #9
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Bonsoir Fayred,

    Merci à tout les deux pour votre aide. Je vais continuer avec les autres listes déroulantes.

    Quel étourdit je fais. Maintenant tout est rentré dans l'ordre. Je reposte mon source corrigé pour les prochains qui liraient ce post.

    Le formulaire [recherche.php]
    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
     
    <?php require_once('Connections/bqe_scl_hype.php'); ?>
    <?php mysql_select_db($database_bqe_scl_hype, $bqe_scl_hype); ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <script src="mesfonc.js" type="text/javascript"></script>
    <title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
    </head>
    	<body>
    		<form>
    			<fieldset style="width: 500px">
    				<legend>Liste liées</legend>
    				<label>Compte</label>
    				<select name="lst_cpte" id="lst_cpte" onchange="gomule()">
    					<option value="-1">Aucun</option>
    					<?php
                                                    $res = mysql_query("SELECT DISTINCT compte FROM t_inventaire_cpte");
                                                    while($row = mysql_fetch_assoc($res)){
                                                    echo "<option value='".$row['compte']."'>".$row['compte']."</option>";
                                                    }
                                            ?>
    				</select>
     
    				<label>Mules</label>
    				<div id="div_mule" style="display:inline">
    				</div>
     
    				<label>Type</label>
    				<div id="div_type" style="display:inline">
    				</div>
    			</fieldset>
    		</form>
    	</body>
    </html>
    Le fichier [ajaxmule.php]
    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
     
    <?php require_once('Connections/bqe_scl_hype.php'); ?>
    <?php mysql_select_db($database_bqe_scl_hype, $bqe_scl_hype); ?>
    <?php
            header("Content-Type: text/html; charset=iso-8859-15");
            echo "<select name='lst_mule' id='lst_mule' onchange='gotype()'>";
            if(isset($_POST["dcpte"]))
            {
                    $res = mysql_query("SELECT DISTINCT mule FROM t_inventaire_cpte"
                     . " WHERE compte = '".utf8_decode($_POST["dcpte"])."' ORDER BY mule");
                    while($row = mysql_fetch_assoc($res))
                    {
                            echo "<option value='".$row["mule"]."'>".$row["mule"]."</option>";
                    }
            }
            echo "</select>";
            
    ?>
    Le fichier [ajaxtype.php]
    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
     
    <?php require_once('Connections/bqe_scl_hype.php'); ?>
    <?php mysql_select_db($database_bqe_scl_hype, $bqe_scl_hype); ?>
    <?php
            header("Content-Type: text/html; charset=iso-8859-15");
            echo "<select name='lst_type' id='lst_type' onchange='gocategorie()'>";
            if(isset($_POST["dcpte"]) && isset($_POST["dmule"]))
            {
                    $res = mysql_query("SELECT DISTINCT type FROM t_inventaire_cpte"
                     . " WHERE compte = '".utf8_decode($_POST['dcpte'])."' AND mule= '".utf8_decode($_POST['dmule'])."' ORDER BY type");
                     while($row = mysql_fetch_assoc($res))
                     {
                            echo "<option value='".$row["type"]."'>".$row["type"]."</option>";
                     }
            }
            echo "</select>";
    ?>
    Le fichier [mesfonc.js]
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    // Creation de l'objet XMLHttpRequest
    function getXhr()
    {
    	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..."); 
    		xhr = false; 
    	} 
    	return xhr;
    }
     
     
    /* Gestion de la liste déroulante des mules */
    function gomule()
    {
    	var xhrmule = getXhr();
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhrmule.onreadystatechange = function()
    	{
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhrmule.readyState == 4 && xhrmule.status == 200)
    		{
    			leselect = xhrmule.responseText;
    			// Ajoute les options a la liste via lid du div
    			$idobjet('div_mule').innerHTML = leselect;
    		}
    	}
     
    	// Ici on va voir comment faire du post
    	xhrmule.open("POST","ajaxmules.php",true);
    	// ne pas oublier ça pour le post
    	xhrmule.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	// Poste les arguments ici le compte via l'id du select
    	var selcpte = $idobjet('lst_cpte');
    	var cptesel = selcpte.options[selcpte.selectedIndex].value;
    	var data = "dcpte="+cptesel;
    	xhrmule.send(data);
    }
     
     
    /* Gestion de la liste déroulante des types */
    function gotype()
    {
    	var xhr = getXhr();
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhr.onreadystatechange = function()
    	{
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhr.readyState == 4 && xhr.status == 200)
    		{
    			leselecttype = xhr.responseText;
    			// Ajouter les options a la liste via l'id du div
    			$idobjet('div_type').innerHTML = leselecttype;
     
    		}
    	}
     
    	// Ici on va voir comment faire du post
    	xhr.open("POST","ajaxtypes.php",true);
    	// ne pas oublier ça pour le post
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	// Poste les arguments le compte puis la mule via l'id du select
    	var selcpte = $idobjet('lst_cpte');
    	var cptesel = selcpte.options[selcpte.selectedIndex].value;
     
    	var selmule = $idobjet('lst_mule');
    	var mulesel = selmule.options[selmule.selectedIndex].value;
     
    	var datatype = "dcpte="+cptesel+"&dmule="+mulesel;
    	xhr.send(datatype);
    }
     
    /* Par faignantise de frapper du code merci à d-Rek*/
    function $idobjet(id)
    {
    	return document.getElementById(id);
    }

  10. #10
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Bonjour à tous,

    J'ai de nouveau un problème avec mes listes déroulantes liées.

    Elles fonctionnent en local avec IE 6 et Firefox.

    En ligne elles ne fonctionnent plus sur IE 6 mais avec Firefox elles fonctionnent.

    A mon avis cela vient des accents. Mais je ne vois pas pourquoi.

    En effet dans mes listes déroulantes sous IE toutes les options avec accents ne s'affichent pas.

    Pourriez vous m'aider. Lien du site ci dessous. Pour tester les listes il suffit de cliquer sur le bouton [Test Listes].

    Pour tester avec Firefox :
    Compte = "BKL3_2"
    Mule = "Mule 2"
    Type = "Epée"

    Pour tester avec IE :
    Compte = "BKL3_2"
    Mule = "Mule 2"
    Type = "Hache" (car l'option Epée n'est dans la liste)


    Mon site en exemple

    Ci dessous mes codes sources :
    Le fichier recherche.php
    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
     
    <?php require_once('Connections/bqe_scl_hype.php'); ?>
    <?php mysql_select_db($database_bqe_scl_hype, $bqe_scl_hype); ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
    <script src="mesfonc.js" type="text/javascript"></script>
    <title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
    </head>
    	<body>
    		<form>
    			<fieldset style="width: 800px">
    				<legend>Liste liées</legend>
    				<label>Compte</label>
    				<select name="lst_cpte" id="lst_cpte" onchange="gomule()">
    					<option value="-1">Aucun</option>
    					<?php
                                                    $res = mysql_query("SELECT DISTINCT compte FROM t_inventaire_cpte");
                                                    while($row = mysql_fetch_assoc($res)){
                                                    echo "<option value='".$row['compte']."'>".$row['compte']."</option>";
                                                    }
                                            ?>
    				</select>
     
    				<label>Mules</label>
    				<div id="div_mule" style="display:inline">
    				</div>
     
    				<label>Type</label>
    				<div id="div_type" style="display:inline">
    				</div>
     
    				<label>Categorie</label>
    				<div id="div_cate" style="display:inline">
    				</div>
     
    			</fieldset>
    		</form>
    	</body>
    </html>
    Le fichier ajaxmule.php
    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
     
    <?php require_once('Connections/bqe_scl_hype.php'); ?>
    <?php mysql_select_db($database_bqe_scl_hype, $bqe_scl_hype); ?>
    <?php
            header("Content-Type: text/html; charset=iso-8859-15");
            echo "<select name='lst_mule' id='lst_mule' onchange='gotype()'>";
            if(isset($_POST["dcpte"]))
            {
                    $res = mysql_query("SELECT DISTINCT mule FROM t_inventaire_cpte"
                     . " WHERE compte = '".utf8_decode($_POST["dcpte"])."' ORDER BY mule");
                    while($row = mysql_fetch_assoc($res))
                    {
                            echo "<option value='".$row["mule"]."'>".$row["mule"]."</option>";
                    }
            }
            echo "</select>";
            
    ?>
    Le fichier ajaxtype.php
    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
     
    <?php require_once('Connections/bqe_scl_hype.php'); ?>
    <?php mysql_select_db($database_bqe_scl_hype, $bqe_scl_hype); ?>
    <?php
            header("Content-Type: text/html; charset=iso-8859-15");
            echo "<select name='lst_type' id='lst_type' onchange='gocategorie()'>";
            if(isset($_POST["dcpte"]) && isset($_POST["dmule"]))
            {
                    $res = mysql_query("SELECT DISTINCT type FROM t_inventaire_cpte"
                     . " WHERE 
                     compte = '".utf8_decode($_POST['dcpte'])."' AND 
                     mule= '".utf8_decode($_POST['dmule'])."' ORDER BY type");
                     
                     while($row = mysql_fetch_assoc($res))
                     {
                            echo "<option value='".$row["type"]."'>".$row["type"]."</option>";
                     }
            }
            echo "</select>";
    ?>
    Le fichier ajaxcategorie.php
    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
     
    <?php require_once('Connections/bqe_scl_hype.php'); ?>
    <?php mysql_select_db($database_bqe_scl_hype, $bqe_scl_hype); ?>
    <?php
            header("Content-Type: text/html; charset=iso-8859-15");
            echo "<select name='lst_cate' id='lst_cate' >";
            if(isset($_POST["ddcpte"]) && isset($_POST["ddmule"]) && isset($_POST["ddtype"]))
            {
                    $res = mysql_query("SELECT DISTINCT categorie FROM t_inventaire_cpte"
                            . " WHERE 
                            compte = '".utf8_decode($_POST['ddcpte'])."' AND 
                            mule = '".utf8_decode($_POST['ddmule'])."' AND 
                            type= '".utf8_decode($_POST['ddtype'])."' ORDER BY categorie");
                     while($row = mysql_fetch_assoc($res))
                     {
                    echo "<option value='".$row["categorie"]."'>".$row["categorie"]."</option>";
                    echo $row["categorie"];
                     }
            }
            echo "</select>";
    ?>
    Le fichier mesfonc.js
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
     
    // Creation de l'objet XMLHttpRequest
    function getXhr()
    {
    	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..."); 
    		xhr = false; 
    	} 
    	return xhr;
    }
     
     
    /* Gestion de la liste déroulante des mules */
    function gomule()
    {
    	var xhrmule = getXhr();
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhrmule.onreadystatechange = function()
    	{
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhrmule.readyState == 4 && xhrmule.status == 200)
    		{
    			leselect = xhrmule.responseText;
    			// Ajoute les options a la liste via lid du div
    			$idobjet('div_mule').innerHTML = leselect;
    		}
    	}
     
    	// Ici on va voir comment faire du post
    	xhrmule.open("POST","ajaxmules.php",true);
    	// ne pas oublier ça pour le post
    	xhrmule.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	// Poste les arguments ici le compte via l'id du select
    	var selcpte = $idobjet('lst_cpte');
    	var cptesel = selcpte.options[selcpte.selectedIndex].value;
    	var data = "dcpte="+cptesel;
    	xhrmule.send(data);
    }
     
     
    /* Gestion de la liste déroulante des types */
    function gotype()
    {
    	var xhr = getXhr();
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhr.onreadystatechange = function()
    	{
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhr.readyState == 4 && xhr.status == 200)
    		{
    			leselecttype = xhr.responseText;
    			// Ajouter les options a la liste via l'id du div
    			$idobjet('div_type').innerHTML = leselecttype;
    		}
    	}
     
    	// Ici on va voir comment faire du post
    	xhr.open("POST","ajaxtypes.php",true);
    	// ne pas oublier ça pour le post
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	// Poste les arguments le compte puis la mule via l'id du select
    	var selcpte = $idobjet('lst_cpte');
    	var cptesel = selcpte.options[selcpte.selectedIndex].value;
     
    	var selmule = $idobjet('lst_mule');
    	var mulesel = selmule.options[selmule.selectedIndex].value;
     
    	var datatype = "dcpte="+cptesel+"&dmule="+mulesel;
    	xhr.send(datatype);
    }
     
    /* Gestion de la liste déroulante des types */
    function gocategorie()
    {
    	var xhrcate = getXhr();
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhrcate.onreadystatechange = function()
    	{
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhrcate.readyState == 4 && xhrcate.status == 200)
    		{
    			leselecttype = xhrcate.responseText;
    			// Ajouter les options a la liste via l'id du div
    			$idobjet('div_cate').innerHTML = leselecttype;
    		}
    	}
     
    	// Ici on va voir comment faire du post
    	xhrcate.open("POST","ajaxcategorie.php",true);
    	// ne pas oublier ça pour le post
    	xhrcate.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	// Poste les arguments le compte puis la mule via l'id du select
    	var selcpte = $idobjet('lst_cpte');
    	var cptesel = selcpte.options[selcpte.selectedIndex].value;
     
    	var selmule = $idobjet('lst_mule');
    	var mulesel = selmule.options[selmule.selectedIndex].value;
     
    	var seltype = $idobjet('lst_type');
    	var typesel = seltype.options[seltype.selectedIndex].value;
     
    	var datacate = "ddcpte="+cptesel+"&ddmule="+mulesel+"&ddtype="+typesel;
    	xhrcate.send(datacate);
    }
     
     
    /* Par faignantise de frapper du code merci à d-Rek */
    function $idobjet(id)
    {
    	return document.getElementById(id);
    }

  11. #11
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 14
    Points : 5
    Points
    5
    Par défaut Version finale
    Bonjour à tous,

    J'ai trouvé j'ai ajouté la fonction htmlentities() : à chaque fois que je remplis mes listes déroulantes : code source complet ci-dessous pour ceux qui sont intéressés.

    Mon site en exemple ci-dessous :

    Mon site

    Le fichier recherche.php (Rien à changer)
    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
     
    <?php require_once('Connections/bqe_scl_hype.php'); ?>
    <?php mysql_select_db($database_bqe_scl_hype, $bqe_scl_hype); ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
    <link href="banque_scl.css" rel="stylesheet" type="text/css">
    <script src="mesfonc.js" type="text/javascript"></script>
    <title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
    </head>
    	<body>
    		<form name="frm_recherche" id="frm_recherche" style="width:850px">
    			<fieldset>
    				<legend><span class="Legende">[ Listes liées avec XMLHttpRequest ]</span></legend>
    				<br />
    				<label>Compte</label>
    				<select name="lst_cpte" id="lst_cpte" onchange="gomule(this.value)">
    					<option value="-1">Compte</option>
    					<?php
                                                    $res = mysql_query("SELECT DISTINCT compte FROM t_inventaire_cpte");
                                                    while($row = mysql_fetch_assoc($res)){
                                                    echo "<option value='".$row['compte']."'>".$row['compte']."</option>";
                                                    }
                                            ?>
    				</select>
     
    				<div id="div_mule" style="display:inline">
    				</div>
     
    				<div id="div_type" style="display:inline">
    				</div>
     
    				<div id="div_cate" style="display:inline">
    				</div>
     
    				<div id="div_obj" style="display:inline">
    				</div>
    			</fieldset>
    		</form>
    	</body>
    </html>
    Le fichier ajaxmules.php ici j'ai ajouté la fonction htmlentities()
    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
     
    <?php require_once('Connections/bqe_scl_hype.php'); ?>
    <?php mysql_select_db($database_bqe_scl_hype, $bqe_scl_hype); ?>
    <?php
            header("Content-Type: text/html; charset=iso-8859-15");
            echo '<label>Mules</label>';
            echo '<select name="lst_mule" id="lst_mule" onchange="gotype(this.value)">';
            echo '<option value="-1">Mule</option>';
            if(isset($_POST["dcpte"]))
            {
                    $res = mysql_query("SELECT DISTINCT mule FROM t_inventaire_cpte"
                     . " WHERE compte = '".utf8_decode($_POST["dcpte"])."' ORDER BY mule");
                    while($row = mysql_fetch_assoc($res))
                    {
                            echo "<option value='".htmlentities($row["mule"])."'>".htmlentities($row["mule"])."</option>";
                    }
            }
            echo "</select>";
            
    ?>
    Le fichier ajaxtypes.php ici j'ai ajouté la fonction htmlentities()
    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
     
    <?php require_once('Connections/bqe_scl_hype.php'); ?>
    <?php mysql_select_db($database_bqe_scl_hype, $bqe_scl_hype); ?>
    <?php
            header("Content-Type: text/html; charset=iso-8859-15");
            echo '<label>Type</label>';
            echo '<select name="lst_type" id="lst_type" onchange="gocategorie(this.value)">';
            echo '<option value="-1">Type</option>';
            if(isset($_POST["dcpte"]) && isset($_POST["dmule"]))
            {
                    $res = mysql_query("SELECT DISTINCT type FROM t_inventaire_cpte"
                     . " WHERE 
                     compte = '".utf8_decode($_POST['dcpte'])."' AND 
                     mule= '".utf8_decode($_POST['dmule'])."' ORDER BY type");
                     
                     while($row = mysql_fetch_assoc($res))
                     {
                            echo "<option value='".htmlentities($row["type"])."'>".htmlentities($row["type"])."</option>";
                     }
            }
            echo "</select>";
    ?>
    Le fichier ajaxcategories.php ici j'ai ajouté la fonction htmlentities()
    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
     
    <?php require_once('Connections/bqe_scl_hype.php'); ?>
    <?php mysql_select_db($database_bqe_scl_hype, $bqe_scl_hype); ?>
    <?php
            header("Content-Type: text/html; charset=iso-8859-15");
            echo '<label>Categorie</label>';
            echo '<select name="lst_cate" id="lst_cate" onchange="goobjet(this.value)">';
            echo '<option value="-1">Categorie</option>';   
            if(isset($_POST["ddcpte"]) && isset($_POST["ddmule"]) && isset($_POST["ddtype"]))
            {
                    $res = mysql_query("SELECT DISTINCT categorie FROM t_inventaire_cpte"
                            . " WHERE 
                            compte = '".utf8_decode($_POST['ddcpte'])."' AND 
                            mule = '".utf8_decode($_POST['ddmule'])."' AND 
                            type= '".utf8_decode($_POST['ddtype'])."' ORDER BY categorie");
                     while($row = mysql_fetch_assoc($res))
                     {
                    echo "<option value='".htmlentities($row["categorie"])."'>".htmlentities($row["categorie"])."</option>";
                     }
            }
            echo "</select>";
    ?>
    Le fichier ajaxobj.php ici j'ai ajouté la fonction htmlentities()
    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
     
    <?php require_once('Connections/bqe_scl_hype.php'); ?>
    <?php mysql_select_db($database_bqe_scl_hype, $bqe_scl_hype); ?>
    <?php
            header("Content-Type: text/html; charset=iso-8859-15");
            echo '<label>Objet</label>';
            echo "<select name='lst_obj' id='lst_obj'>";
            echo '<option value="-1">Objet</option>';               
            if(isset($_POST["ddcpte"]) && isset($_POST["ddmule"]) && isset($_POST["ddtype"]) && isset($_POST["ddcate"]))
            {
                    $res = mysql_query("SELECT DISTINCT objet FROM t_inventaire_cpte"
                            . " WHERE 
                            compte = '".utf8_decode($_POST['ddcpte'])."' AND 
                            mule = '".utf8_decode($_POST['ddmule'])."' AND 
                            type= '".utf8_decode($_POST['ddtype'])."' AND
                            categorie = '".utf8_decode($_POST['ddcate'])."' ORDER BY objet");                       
                     while($row = mysql_fetch_assoc($res))
                     {
            echo "<option value='".htmlentities($row["objet"])."'>".htmlentities($row["objet"])."</option>";
                     }
            }
            echo "</select>";
    ?>
    Le fichier mesfonc.js (rien à changer)
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
     
    // Creation de l'objet XMLHttpRequest
    function getXhr()
    {
    	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..."); 
    		xhr = false; 
    	} 
    	return xhr;
    }
     
     
    /* Gestion de la liste déroulante des mules */
    function gomule(cpte)
    {
    	/* Cache les Div Mule, Type, Categorie et objet
    	   si option sélectionnée dans la liste déroulante des comptes */	
    	$idobjet('div_mule').innerHTML = '';
    	$idobjet('div_type').innerHTML = '';
    	$idobjet('div_cate').innerHTML = '';
    	$idobjet('div_obj').innerHTML = '';		
     
    	var xhrmule = getXhr();
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhrmule.onreadystatechange = function()
    	{
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhrmule.readyState == 4 && xhrmule.status == 200)
    		{
    			leselect = xhrmule.responseText;
    			// Ajoute les options a la liste via lid du div
    			$idobjet('div_mule').innerHTML = leselect;
    		}
    	}
     
    	// Ici on va voir comment faire du post
    	xhrmule.open("POST","ajaxmules.php",true);
    	// ne pas oublier ça pour le post
    	xhrmule.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	// Poste les arguments ici le compte via l'id du select
    	var selcpte = $idobjet('lst_cpte');
    	var cptesel = selcpte.options[selcpte.selectedIndex].value;
    	var data = "dcpte="+cptesel;
    	xhrmule.send(data);
    }
     
     
    /* Gestion de la liste déroulante des types */
    function gotype(typ)
    {
    	/* Cache les Div Type, Categorie et objet
    	   si option sélectionnée dans la liste déroulante des mules */	
    	$idobjet('div_type').innerHTML = '';
    	$idobjet('div_cate').innerHTML = '';
    	$idobjet('div_obj').innerHTML = '';				
     
    	var xhrtype = getXhr();
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhrtype.onreadystatechange = function()
    	{
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhrtype.readyState == 4 && xhrtype.status == 200)
    		{
    			leselecttype = xhrtype.responseText;
    			// Ajouter les options a la liste via l'id du div
    			$idobjet('div_type').innerHTML = leselecttype;
    		}
    	}
     
    	// Ici on va voir comment faire du post
    	xhrtype.open("POST","ajaxtypes.php",true);
    	// ne pas oublier ça pour le post
    	xhrtype.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	// Poste les arguments le compte puis la mule via l'id du select
    	var selcpte = $idobjet('lst_cpte');
    	var cptesel = selcpte.options[selcpte.selectedIndex].value;
     
    	var selmule = $idobjet('lst_mule');
    	var mulesel = selmule.options[selmule.selectedIndex].value;
     
    	var datatype = "dcpte="+cptesel+"&dmule="+mulesel;
    	xhrtype.send(datatype);
    }
     
    /* Gestion de la liste déroulante des categories */
    function gocategorie(cate)
    {
    	/* Cache les Div Categorie et objet
    	   si option sélectionnée dans la liste déroulante des types */	
    	$idobjet('div_cate').innerHTML = '';
    	$idobjet('div_obj').innerHTML = '';		
     
    	var xhrcate = getXhr();
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhrcate.onreadystatechange = function()
    	{
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhrcate.readyState == 4 && xhrcate.status == 200)
    		{
    			leselectcate = xhrcate.responseText;
    			// Ajouter les options a la liste via l'id du div
    			$idobjet('div_cate').innerHTML = leselectcate;
    		}
    	}
     
    	// Ici on va voir comment faire du post
    	xhrcate.open("POST","ajaxcategorie.php",true);
    	// ne pas oublier ça pour le post
    	xhrcate.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	// Poste les arguments le compte puis la mule via l'id du select
    	var selcpte = $idobjet('lst_cpte');
    	var cptesel = selcpte.options[selcpte.selectedIndex].value;
     
    	var selmule = $idobjet('lst_mule');
    	var mulesel = selmule.options[selmule.selectedIndex].value;
     
    	var seltype = $idobjet('lst_type');
    	var typesel = seltype.options[seltype.selectedIndex].value;
     
    	var datacate = "ddcpte="+cptesel+"&ddmule="+mulesel+"&ddtype="+typesel;
    	xhrcate.send(datacate);
    }
     
    /* Gestion de la liste déroulante des categories */
    function goobjet(obj)
    {
    	/* Cache le Div objet
    	   si option sélectionnée dans la liste déroulante des categories */		
    	$idobjet('div_obj').innerHTML = '';
     
    	var xhrobjet = getXhr();
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhrobjet.onreadystatechange = function()
    	{
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhrobjet.readyState == 4 && xhrobjet.status == 200)
    		{
    			leselectobj = xhrobjet.responseText;
    			// Ajouter les options a la liste via l'id du div
    			$idobjet('div_obj').innerHTML = leselectobj;
    		}
    	}			
    	// Ici on va voir comment faire du post
    	xhrobjet.open("POST","ajaxobj.php",true);
    	// ne pas oublier ça pour le post
    	xhrobjet.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	// Poste les arguments le compte puis la mule via l'id du select
    	var selcpte = $idobjet('lst_cpte');
    	var cptesel = selcpte.options[selcpte.selectedIndex].value;
     
    	var selmule = $idobjet('lst_mule');
    	var mulesel = selmule.options[selmule.selectedIndex].value;
     
    	var seltype = $idobjet('lst_type');
    	var typesel = seltype.options[seltype.selectedIndex].value;
     
    	var selcat = $idobjet('lst_cate');
    	var catesel = selcat.options[selcat.selectedIndex].value;
     
    	var dataobjet = "ddcpte="+cptesel+"&ddmule="+mulesel+"&ddtype="+typesel+"&ddcate="+catesel;
    	xhrobjet.send(dataobjet);
    }
     
    /* Par faignantise de frapper du code merci à d-Rek */
    function $idobjet(id)
    {
    	return document.getElementById(id);
    }

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

Discussions similaires

  1. [AJAX] Ajax listes liées avec modules Joomla
    Par dualweil dans le forum AJAX
    Réponses: 0
    Dernier message: 07/04/2010, 06h18
  2. [AJAX] Listes liées avec Ajax
    Par r3iko dans le forum AJAX
    Réponses: 1
    Dernier message: 30/06/2009, 00h19
  3. [DOM] Liste liées avec ajax
    Par lenissart dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 26/01/2009, 17h08
  4. [AJAX] Listes déroulantes liées avec Ajax
    Par paupiette dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/08/2006, 16h51

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