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

Langage PHP Discussion :

Chargement de liste dynamique - PHP et JS


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 35
    Points : 25
    Points
    25
    Par défaut Chargement de liste dynamique - PHP et JS
    Bonsoir à tous,

    Sur ma page de création de compte, je souhaite queles gens sélectionne leur pays, en fonction du pays, la liste des départements (ou districts) apparait dans un nouveau selecteur, enfin en fonction du département sélectionné, une liste de ville apparaisse.

    J'ai beau tout essayer depuis plusieurs jours, je n'en vois pas la fin... Peut-être réussirez vous à m'aider ; )

    Voici le code de ma page de création compte, qui se charge de base de cette manière:

    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
    <div>
    	<p>Sélectionnez votre pays</p>
    	<select name="pays" id="pays"  onchange="chargerListe('recup_departement.php','pays','departement')">
    	<?php	$reponse = $gbdd->query('SELECT id_pays, nom_pays FROM pays ORDER BY nom_pays');?>
    		<option  value="0">Choisir pays</option>
    		<?php while($donnees = $reponse->fetch(PDO::FETCH_OBJ)) 
    		{ echo '<option  value="' . $donnees->id_pays . '">' . $donnees->nom_pays . '</option>'; } 
    ?>
    	</select>
    </div>
     
    <div>
    	<p>Sélectionnez votre département</p>
    	<span id="departement">
    		<select name="departement">
    			<option  value="0">Sélectionnez un pays</option>
    		</select> 
    	</span>
    </div>
     
    <div>
    	<p>Enfin, sélectionnez votre ville</p>
    	<span id="ville">
    		<select name="ville">
    			<option  value="0">Sélectionnez un département</option>
    		</select> 
    	</span>
    </div>

    Voici le code de la page recup_departement.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
    <?php
    if(isset($_POST['nom_liste']) && isset($_POST['val_sel']))
    {
        $reponse = $bdd->prepare("SELECT id_departement, code, nom_departement FROM departement WHERE id_pays = :id_pays ORDER BY nom_departement");
        $reponse->execute(array('id_pays' => $_POST['val_sel']));
        $i = 0;
     
        echo "<select id='departement' name='".$_POST['nom_liste']."'  onchange=\"chargeListe('recup_ville.php','departement','ville')\">";
    	while($donnees = $reponse->fetch(PDO::FETCH_OBJ))
        {
            echo "
    		<option value='". $donnees->id_departement ."'>". $donnees->nom_departement . " (" . $donnees->code . ")</option>";
            $i++;
        }
        if($i==0)
        {
            echo "<option value='0'>S&eacute;lectionnez votre pays</option>";
        }
        echo '</select>';
    }
     
     else
     {
            echo 'Parametres vides';
     }
     
    ?>
    Voici le code de la page concernant les villes cette fois-ci, recup_ville.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
    <?php
    if(isset($_POST['noms_liste']) && isset($_POST['vals_select']))
    {
        $req = $bdd->prepare("SELECT id_ville, nom, cp FROM maps_ville WHERE id_departement = :id_departement ORDER BY nom");
        $req->execute(array('id_departement' => $_POST['vals_select']));
        $i = 0;
     
        echo "<select id='listeville' name='".$_POST['noms_liste']."'>";
        while($result = $req->fetch(PDO::FETCH_OBJ))
        {
            echo "<option value='". $result->id_ville ."'>". $result->nom . " (" . $result->cp . ")</option>";
            $i++;
        }
        if($i==0)
        {
            echo "<option value='0'>S&eacute;lectionnez votre ville</option>";
        }
        echo '</select>';
    }
     
     else
     {
            echo 'Parametres vides';
     }
     
    ?>
    Voilà pour le principal de code php, enfin le fichier de fonction en js:

    Code javascript : 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
    /* chargement liste dynamique */
     
    function chargerListe(url,id_list1,id_list2)
    {
        var xhr = new objXHR(true);
        var obj =document.getElementById(id_list1);
        xhr.addParam("val_sel", obj.value);
        xhr.addParam("nom_liste", id_list2);
        xhr.getObjConnexion().onreadystatechange = function() 
    {repChargerListe(xhr.getObjConnexion(),id_list2);}
        xhr.executerRequete(url);
    }
     
    function chargerListe2(url,id_list1,id_list2)
    {
        var xhr = new objXHR(true);
        var list_dep =document.getElementById(id_list1);
     
     
        xhr.addParam("val_sel", list_dep.value);
        xhr.addParam("nom_liste", id_list2);
        xhr.getObjConnexion().onreadystatechange = function() 
    {repChargerListe(xhr.getObjConnexion(),id_list2);}
        xhr.executerRequete(url);
     
        var region =document.getElementById("region");
        region.value = list_dep.options[list_dep.options.selectedIndex].id;
    }
     
    /* chargement liste dynamique */
     
    function chargeListe(url,id_list1,id_list2)
    {
        var xhr = new objXHR(true);
        var obj =document.getElementById(id_list1);
        xhr.addParam("vals_select", obj.value);
        xhr.addParam("noms_liste", id_list2);
        xhr.getObjConnexion().onreadystatechange = function() 
    {repChargeListe(xhr.getObjConnexion(),id_list2);}
        xhr.executerRequete(url);
    }
     
    function chargeListe2(url,id_list1,id_list2)
    {
        var xhr = new objXHR(true);
        var list_dep =document.getElementById(id_list1);
     
     
        xhr.addParam("vals_select", list_dep.value);
        xhr.addParam("noms_liste", id_list2);
        xhr.getObjConnexion().onreadystatechange = function() 
    {repChargeListe(xhr.getObjConnexion(),id_list2);}
        xhr.executerRequete(url);
     
        var region =document.getElementById("region");
        region.value = list_dep.options[list_dep.options.selectedIndex].id;
    }
     
    function repChargerListe(xhr,id_div)
    {
        // Si toutes les donnees sont chagees
        if (xhr.readyState == 4)
        {
            // Et que tout c'est bien passe
            if (xhr.status == 200)
            {
                //charger les elements reçus dans la liste
                var affich_list=xhr.responseText;
                obj = document.getElementById(id_div);
                obj.innerHTML = affich_list;
            }
            else
            {
                alert('Un problème est survenu avec la requête.');
            }
        }
    }
     
    function repChargeListe(xhr,id_div)
    {
        // Si toutes les donnees sont chagees
        if (xhr.readyState == 4)
        {
            // Et que tout c'est bien passe
            if (xhr.status == 200)
            {
                //charger les elements reçus dans la liste
                var affich_list=xhr.responseText;
                obj = document.getElementById(id_div);
                obj.innerHTML = affich_list;
            }
            else
            {
                alert('Un problème est survenu avec la requête.');
            }
        }
    }
    Merci d'avance de votre aide !!

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ton javascript est impraticable : chargeliste, chargeliste2, chargerliste, chargerliste2 et deux fois repChargerListe. et un objXHR d'origine inconnue.

    Repars sur de bonnes bases :
    http://siddh.developpez.com/articles/ajax/

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 35
    Points : 25
    Points
    25
    Par défaut
    Bonjour et merci de ton aide !

    En effet, j'ai retirer la fonction chargeListe2, la premiere liste fonctionne mais la seconde parametré grace à la premiere ne se charge pas.

    J'a répété la fonction chargerListe pourtant !

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Quel est ton code maintenant ?
    As-tu controlé si tu avais des erreurs Javascript ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 35
    Points : 25
    Points
    25
    Par défaut
    Aucune erreurs javascript d'après la console.

    Les voilà, c'est sur fonctionsjs.js qu'il y'a eu le plus de changement:

    Tu pense que je devrais aussi virer la fonction chargerListe 2 ? c'est une variable pour les régions, mais elle ne sert pas...
    Code javascript : 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
    /* chargement liste dynamique */
     
    function chargerListe(url,id_list1,id_list2)
    {
        var xhr = new objXHR(true);
        var obj =document.getElementById(id_list1);
        xhr.addParam("val_sel", obj.value);
        xhr.addParam("nom_liste", id_list2);
        xhr.getObjConnexion().onreadystatechange = function() {repChargerListe(xhr.getObjConnexion(),id_list2);}
        xhr.executerRequete(url);
    }
     
    function chargerListe2(url,id_list1,id_list2)
    {
        var xhr = new objXHR(true);
        var list_dep =document.getElementById(id_list1);
     
     
        xhr.addParam("val_sel", list_dep.value);
        xhr.addParam("nom_liste", id_list2);
        xhr.getObjConnexion().onreadystatechange = function() {repChargerListe(xhr.getObjConnexion(),id_list2);}
        xhr.executerRequete(url);
     
        var region =document.getElementById("region");
        region.value = list_dep.options[list_dep.options.selectedIndex].id;
    }
     
    function repChargerListe(xhr,id_div)
    {
        // Si toutes les donnees sont chagees
        if (xhr.readyState == 4)
        {
            // Et que tout c'est bien passe
            if (xhr.status == 200)
            {
                //charger les elements reçus dans la liste
                var affich_list=xhr.responseText;
                obj = document.getElementById(id_div);
                obj.innerHTML = affich_list;
            }
            else
            {
                alert('Un problème est survenu avec la requête.');
            }
        }
    }


    Pas de changement (ou presque) sur la page de creation_compte:
    Code html : 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
    <div>
    	<p>Sélectionnez votre pays</p>
    	<select name="pays" id="pays" onchange="chargerListe('recup_departement.php','pays','departement')">
    	<?php   $reponse = $gbdd->query('SELECT id_pays, nom_pays FROM pays ORDER BY id_pays');?>
    			<option  value="0">Choisir pays</option>
    			<?php while($donnees = $reponse->fetch(PDO::FETCH_OBJ))
                            { echo '<option  value="' . $donnees->id_pays . '">' . $donnees->nom_pays . '</option>'; } ?>
    	</select>
    </div>
     
    <div>
    	<p>Sélectionnez votre département</p>
    	<span id="departement">
    		<select name="departement">
    			<option  value="0">Sélectionnez un pays</option>
    		</select> 
    	</span>
    </div>
     
    <div>
    	<p>Enfin, sélectionnez votre ville</p>
    	<span id="ville">
    		<select name="ville">
    			<option  value="0">Sélectionnez un département</option>
    		</select> 
    	</span>
    </div>

    Recup_departement :
    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
     
    <?php
    include_once("inc/header.php");
    if(isset($_POST['nom_liste']) && isset($_POST['val_sel']))
    {
        $reponse = $gbdd->prepare("SELECT id_departement, code, nom_departement FROM departement WHERE id_pays = :id_pays ORDER BY nom_departement");
        $reponse->execute(array('id_pays' => $_POST['val_sel']));
        $i = 0;
     
        echo "<select style='width: 250px;height: 24px; margin-left:34px;' id='departement' name='".$_POST['nom_liste']."'  onchange=\"chargerListe('recup_ville.php','departement','ville')\">";
    	while($donnees = $reponse->fetch(PDO::FETCH_OBJ))
        {
            echo "
    		<option value='". $donnees->id_departement ."'>". $donnees->nom_departement . " (" . $donnees->code . ")</option>";
            $i++;
        }
        if($i==0)
        {
            echo "<option value='0'>S&eacute;lectionnez votre pays</option>";
        }
        echo '</select>';
    }
     
     else
     {
            echo 'Parametres vides';
     }
     
    ?>
    recup_ville:
    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
     
    <?php
    include_once("inc/header.php");
    if(isset($_POST['nom_liste']) && isset($_POST['val_sel']))
    {
        $req = $gbdd->prepare("SELECT id_ville, nom, cp FROM maps_ville WHERE id_departement = :id_departement ORDER BY nom");
        $req->execute(array('id_departement' => $_POST['val_sel']));
        $i = 0;
     
        echo "<select style='width: 250px;height: 24px; margin-top:6px' id='listeville' name='".$_POST['nom_liste']."'>
    	<option value='0'>Choisissez votre ville</option>";
        while($result = $req->fetch(PDO::FETCH_OBJ))
        {
            echo "<option value='". $result->id_ville ."'>". $result->nom . " (" . $result->cp . ")</option>";
            $i++;
        }
        if($i==0)
        {
            echo "<option value='0'>S&eacute;lectionnez votre ville</option>";
        }
        echo '</select>';
    }
     
     else
     {
            echo 'Pas de ville';
     }
     
    ?>

  6. #6
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    Bonjur,

    Voici quelques lignes qui peuvent t'aider.

    Alors ce n'est pas de l'ajax mais de l'aja(x)

    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
     
    // page html
    <?php
     
    //le php 
    // tu initialises une variable html_pays pour ton select
    $html_pays = "<select name='sel_pays' id='sel_pays' onchange=\"liste_departement();\"><option value=''>-- Pays --</option>";
    // tu effectues ta requete pour récuperer la liste des pays
    // puis tu boucles en concaténant toutes les lignes de ta table dans ta variable $html_pays
    $html_pays .= "<option value='$valeur'>$valeur</option>";
    // la boucle terminée tu fermes ton select
    $html_pays .= "</select>"
    ?>
    <!-- le html -->
    blabla
    <form name='' method='post' action=''>
    <?php echo $html_pays;?>
    <div id="div_departements"></div>
     
    </form>
     
     
     
    // page fonctions.js
    // objet xhr
    var xhr = null;
    function getXhr() {
    	if(window.XMLHttpRequest) xhr = new XMLHttpRequest();
      	else if(window.ActiveXObject) {
    		try {
          			xhr = new ActiveXObject("Msxml2.XMLHTTP");
         		}
        		catch (e) {
          			xhr = new ActiveXObject("Microsoft.XMLHTTP");
         		}
       	}
      	else {
        		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest, veuillez le mettre à jour");
        		xhr = false;
       	}
    }
     
    // fonction appelée par ton select onchange
    function liste_departement() {
    	var pays = document.getElementById('sel_pays').options[document.getElementById('sel_pays').selectedIndex].value;
    	if (pays == "") {
            	alert('Veuillez renseigner le pays');
            	return false;
         	}
         	else {
            	getXhr();
            	xhr.onreadystatechange = function() {
    			if(xhr.readyState == 4 && xhr.status == 200) {
     				// Nous remplacons le contenu du div par le retour de "liste_departements.php"
        				document.getElementById('div_departements').innerHTML = xhr.responseText;
    			}
     
    		}
            	xhr.open("POST",'/php/liste_departements.php',true);
            	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            	xhr.send("pays="+pays);
         }
     
    }
     
     
    // page appelée par ta fonction js 
    // page liste_departements.php
    //tu récupères la variable pays avec un isset
    //tu crées ta requete pour récupérer uniquement les départements du pays
    // tu boucles puis tu concatènes dans un variable comme pour la page html
    // c'est à la fin lorsque tu as fini de parcourir les résultats de ta requète, tu fersmes ton select et tu fais un echo de la variable
    Ensuite pour les villes c'est la même chose.
    Tu crées une 2ème fonction js pour la liste des villes, une nouvelle page php liste_villes.php par exemple. Le retour de liste_villes.php se fera dans un div que tu auras au préalable créé dans ta page html.

    Natso

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 35
    Points : 25
    Points
    25
    Par défaut
    Merci de ton aide Natso,

    En effet, çà pourrait marcher comme çà, pour le moment, aucune erreur js ou autres, mais les départements semble ne pas vouloir s'afficher :

    La page de création adaptée aux nouvelles variables :
    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
     
    <div>
    	<p>Sélectionnez votre pays</p>
    	<select name="sel_pays" id="sel_pays" onchange="liste_departement('recup_departement.php')">
    		<?php	$reponse = $gbdd->query('SELECT id_pays, nom_pays FROM pays ORDER BY id_pays');?>
    		<option  value="0">Choisir pays</option>
    		<?php while($donnees = $reponse->fetch(PDO::FETCH_OBJ)) 
    		{ echo '<option  value="' . $donnees->id_pays . '">' . $donnees->nom_pays . '</option>'; } ?>
    	</select>
    </div>
     
    <div id="div_departements">
    	<p>Sélectionnez votre département</p>
    		<span id="departement">
    			<select name="departement">
    				<option  value="0">Sélectionnez un département</option>
    			</select> 
    		</span>
    </div>
    La page recup_departement
    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
     
    <?php
    include_once("inc/header.php");
    if(isset($_POST['nom_liste']) && isset($_POST['sel_pays']))
    {
        $reponse = $gbdd->prepare("SELECT id_departement, code, nom_departement FROM departement WHERE id_pays = :id_pays ORDER BY nom_departement");
        $reponse->execute(array('id_pays' => $_POST['sel_pays']));
        $i = 0;
     
        echo "<select id='departement' name='".$_POST['nom_liste']."'  onchange=\"chargerListe('recup_ville.php','departement','ville')\">
    	<option value='0'>Choisissez votre d&eacute;partement</option>";
    	while($donnees = $reponse->fetch(PDO::FETCH_OBJ))
        {
            echo "<option value='". $donnees->id_departement ."'>". $donnees->nom_departement . " (" . $donnees->code . ")</option>";
            $i++;
        }
        if($i==0)
        {
            echo "<option value='0'>S&eacute;lectionnez votre pays</option>";
        }
        echo '</select>';
    }
     
     else
     {
            echo 'Pas de d&eacute;partement';
     }
     
    ?>
    Enfin pour ta fonction
    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
     
     
    // fonction appelée par ton select onchange
    function liste_departement() {
    	var pays = document.getElementById('sel_pays').options[document.getElementById('sel_pays').selectedIndex].value;
    	if (pays == "") {
            	alert('Veuillez renseigner le pays');
            	return false;
         	}
         	else {
            	getXhr();
            	xhr.onreadystatechange = function() {
    			if(xhr.readyState == 4 && xhr.status == 200) {
     				// Nous remplacons le contenu du div par le retour de "liste_departements.php"
        				document.getElementById('div_departements').innerHTML = xhr.responseText;
    			}
     
    		}
            	xhr.open("POST",'./recup_departement.php',true);
            	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            	xhr.send("pays="+pays);
         }
     
    }

  8. #8
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    Dans un premier temps dans ta page recup_departement
    il ne faut pas faire plusieurs echo.

    tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $html_dpt = "<select id='departement' name='".$_POST['nom_liste']."'  onchange=\"chargerListe('recup_ville.php','departement','ville')\">
    	<option value='0'>Choisissez votre d&eacute;partement</option>";
    Puis dans ta boucle, tu concatènes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $html_dpt .= "<option value='". $donnees->id_departement ."'>". $donnees->nom_departement . " (" . $donnees->code . ")</option>";
    tu fermes ton select une fois que tu as tout récupéré, puis tu fais un SEUL echo $html_dpt qui sera "attrapé" par document.getElementById('div_departements').innerHTML

    Normalement c'est tout.

    Tu peux toujours tester ta page recup_departement seule pour voir si tu récupères bien la liste des départements.

    Après je ne connais pas la syntaxe PDO

    Natso

  9. #9
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    C'est encore moi.

    C'est quoi ta variable isset($_POST['nom_liste'] dans la page recup_departements ?

    Elle n'est pas passée ici : xhr.send("pays="+pays);Si tu veux faire passer plusieurs variables à ton script , tu fais:
    xhr.send("pays="+pays+"&nom_liste="+ta valeur);Natso

  10. #10
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    oulala

    Je n'avais pas tout vu.

    Tu passe un paramétre à la fonction javascript sur le onchange du select.
    Paramètre que tu ne rècupères pas. onchange="liste_departement('recup_departement.php')">
    Pourquoi ce paramètre 'recup_departement.php' ?

    Natso

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 35
    Points : 25
    Points
    25
    Par défaut
    Bonsoir Natso,

    Merci encore de ton aide, je vais essayer tout çà à nouveau.

    La variable nom_liste était le premier paramètre dans le onchange='(recup_departement.php','$1 (nom_liste)' , '$2 (sel_pays).

    Recup_departement est enfaite le fichier de connexion PDO avec le chargement des départements.

  12. #12
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    Bonjour Auresky,

    Désolé je n'ai pu me libérer plus tôt.

    Tu n'as pas besoin de passer le paramètre recup_departement.php dans le onchange puisque ta fonction js liste_departement sait déjà quelle page exécutée donc:
    onchange="liste_departement()">
    Puis dans ta page recup_departement.php tu fais un simple
    $sel_pays = isset($_POST['sel_pays'])?$_POST['sel_pays']:null;Puis tu exécutes ta requête pour récupérer les départements.

    N'oublie pas que le résultat de cette page remplacera tout ce qu'il ya dans le div <div id="div_departements">
    Voilà, j'espère que tu as pu avancer.
    Natso

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 35
    Points : 25
    Points
    25
    Par défaut
    Bonsoir Natso,

    Le temps pour moi de développer un nouveau module et me revoilà sur ce fameux souci !

    Après avoir essayé mainte et mainte fois, j'arrive à un résultat satisfaisant, mais, enfaite ce formulaire est repris sur plusieurs page et est partagé en partie avec d'autres formulaires. J'aimerais ne pas trop le modifié, mais juste l'adapter.

    Pour le moment l'ensemble fonctionne, il me manque juste la $_POST['sel_pays'] de recup_ville.php, elle me reviens comme undefined dans la page de création compte.

    Une idée pourquoi la variable ets vide pour le second select alors que dans le premier tout est bon ?

Discussions similaires

  1. Liste dynamique php
    Par stefano dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 25/10/2013, 15h24
  2. [AJAX] Chargement de liste dynamique JS
    Par Auresky dans le forum AJAX
    Réponses: 8
    Dernier message: 05/02/2013, 12h49
  3. liste dynamique php associé a une base de données mysql
    Par tribalnanasss dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/07/2010, 15h10
  4. [MySQL] problème remplissage liste dynamique php mysql
    Par jeinny dans le forum PHP & Base de données
    Réponses: 28
    Dernier message: 25/05/2009, 18h32
  5. Liste Dynamique PHP
    Par thechakib dans le forum Langage
    Réponses: 2
    Dernier message: 13/06/2006, 14h58

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