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] Aide sur la liste deroulante


Sujet :

AJAX

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Pilote Privé Avion - Instructeur ULM
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Pilote Privé Avion - Instructeur ULM
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 5
    Points
    5
    Par défaut [AJAX] Aide sur la liste deroulante
    Bonjour a tous, je sollicite votre aide car cela fait plus d'une semaine que je galére pour une simple recuperation de 3 variables d'un select.

    Voila mon probleme:
    J'ai une base SQL contenant deux tables (departement et ville), toutes les listes des deparetements et villes se remplissent bien via une requete, mais je n'arrive pas a recuperer 3 valeurs qui sont dans la table ville ayant pour nom de champ (lat, lon et cp).
    Je voudrais que quand je selectionne une ville dans la liste, que je puisse recuperer sa lat lon et son cp dans 3 champs input, bien entendu les input changent avec une autre selection de la liste...la je coince grave, j'ai tout essayé mais le langage Ajax je ne connais pas trop...

    Voila les champs qui sont dans les tables:
    • Table departement
    • id_departement
    • code_departement
    • nom_departement
    • filtre


    Table ville
    • id_ville
    • id_departement
    • ville
    • filtre
    • cp
    • lat
    • lon


    Les fichiers utilisés:
    index.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
    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
    <html>
    	<head>
    		<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
    		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    		<script type='text/javascript'>
     
    			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;
    			}
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			function recherche_departements(){
    				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){
    						leselect = xhr.responseText;
    						// On se sert de innerHTML pour rajouter les Villes a la liste
    						document.getElementById('ville').innerHTML = leselect;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","cfg.php",true);
    				// ne pas oublier ça pour le post
    				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    				// ne pas oublier de poster les arguments
    				// ici, l'id du Département
    				sel = document.getElementById('departement');
    				id_departement = sel.options[sel.selectedIndex].value;
    				xhr.send("id_departement="+id_departement);
     
    			}
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			function go_latitude(){
    			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){
    						leselect = xhr.responseText;
    						// On se sert de innerHTML pour rajouter les Codes Postaux a la liste
    						document.getElementById('ville').innerHTML = leselect;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","cfg.php",true);
    				// ne pas oublier ça pour le post
    				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    				// ne pas oublier de poster les arguments
    				// ici, l'id de l'auteur
    				//sel = document.getElementById('cp');
    				document.getElementById('code_postal').value= xhr.responseText;
    				id_ville = sel.options[sel.selectedIndex].value;
    			   xhr.send("cp="+cp);
    		}	
     
    //		function change2()
    //			{	
    //				var xhr = getXhr();
    				// On défini ce qu'on va faire quand on aura la réponse
    //				xhr.onreadystatechange = function(){
    //    if(xhr.readyState == 4 && xhr.status == 200){
    //	var rst = xhr.responseXML;
    //	var items=rst.getElementsByTagName('element');
    //	document.getElementById('ville').options.length=0;
    //	for(var i=0;i<items.length;i++){
    //		var myOption = new Option(items[i].getElementsByTagName('option')[0].firstChild.nodeValue,items[i].getElementsByTagName('valeur')[0].firstChild.nodeValue,false,true);
    //		document.getElementById('ville').options[i]=myOption;
    //	}
    //	document.getElementById('ville').onchange = function(){change2();}
    //    }
    //}
     
     
    		</script>
    	</head>
    	<body>
    		<form>
    			<fieldset style="width: 1000px">
    				<legend>Liste des Deparetments</legend>
    				<label>Choisir Departement</label>
    				<select name='departement' id='departement' onchange='recherche_departements()'>
    					<option value='-1'>Aucun</option>
    					<?
    						mysql_connect("localhost","root","bbjodel");
    						mysql_select_db("france");
    						$res = mysql_query("SELECT id_departement, nom_departement FROM departement ORDER BY id_departement");
    						while($row = mysql_fetch_assoc($res)){
    							$accent = "àáâãäåòóôõöøèéêëçìíîïùúûü";
    							$sansaccent = "ÀÁÂÃÄÅÒÓÔÕÖØÈÉÊËÇÌÍÎÏÙÚÛÜ";
    							$row1 = strtr(utf8_encode($row['id_departement']),$accent,$sansaccent);
    							$row2 = strtr(utf8_encode($row['nom_departement']),$accent,$sansaccent);
    							echo "<option value='".$row1."'>".$row2."</option>";
    						}
    					?>
    				</select>
    				<label>Villes</label>
    				<div id='ville' style='display:inline'>
    				<select id="ville" name='ville'>
    					<option value='-1'>Choisir une Ville</option>
    				</select>	
    				</div>
    				<input name='code_postal' id='code_postal' value="">
    			</fieldset>
     
    		</form>
    	</body>
     
    </html>
    cfg.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
    <?php
     
    //	echo "<select name='ville' id='ville' onchange='go_latitude()'>";
    	//echo "<select name='ville' id='ville' onchange='javascript:this.form.lat.value=this.form.ville.value';>";
    	//echo "<select name='ville' id='ville' onchange='javascript:this.form.lat.value=".$latlon."';>"; 
     
    	echo "<select name='ville' id='ville' onchange=go_latitude();>";
    //cho "<input name='code_postal' id='code_postal' value="">";
    	if(isset($_POST["id_departement"])){
     
    		mysql_connect("localhost","root","bbjodel");
    		mysql_select_db("france");
     
    		$res = mysql_query("SELECT id_ville, ville, cp, lat, lon FROM ville WHERE id_departement=".$_POST["id_departement"]." ORDER BY id_ville");
    		$accent = "àáâãäåòóôõöøèéêëçìíîïùúûü";
    		$sansaccent = "ÀÁÂÃÄÅÒÓÔÕÖØÈÉÊËÇÌÍÎÏÙÚÛÜ";
    		while($row = mysql_fetch_assoc($res)){
    			$row1 = strtr(utf8_encode($row['lat']),$accent,$sansaccent);
    			$row2 = strtr(utf8_encode($row['lon']),$accent,$sansaccent);
    			$row3 = strtr(utf8_encode($row['ville']),$accent,$sansaccent);
    			$row4 = strtr(utf8_encode($row['cp']),$accent,$sansaccent);
    //			$latlon = $row1." ".$row2;
    			echo '<option value="'.$row.'"> '.$row3.' '.$row1.' '.$row2.' '.$row4.'</option>';
    //			echo "<input name='codes_postaux' id='codes_postaux' value=".'cp'.">";
    	//		echo "<option value='".$row['']."'>".$row['ville'].' '.$row['lat'].' '.$row['lon']."</option>";
    		}
    	}
    		//	echo "<input name='codes_postaux' id='codes_postaux' value=".$row4.">";
     
    	echo "</select>";
    //		echo "<input name='codes_postaux' id='codes_postaux' value=".$row4.">";
    //echo "<select input name=\"ville\"><option value=\"'. $row4.'\">'.$row4.' </select> ";
     
    ?>
    Pouvez vous m'aider ?

    Amicalement Fred

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut et bienvenue sur les forums de developpez.com,

    Quelques remarques:
    Je voudrais que quand je selectionne une ville dans la liste, que je puisse recuperer sa lat lon et son cp dans 3 champs input, bien entendu les input changent avec une autre selection de la liste..
    le premier souci c'est que les champs associés n'existent pas dans ton code HTML

    Ensuite, dans recherche_departements et go_latitude tu appelles via AJAX la même page PHP cfg.php dont le script ne permet pas de distinguer les deux cas. Donc pour plus de clarté tu devrais faire 2 scripts PHP.

    Ensuite encore, dans ta fonction go_latitude(){ tu écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    				
    //...
    document.getElementById('code_postal').value= xhr.responseText;
    id_ville = sel.options[sel.selectedIndex].value;
    xhr.send("cp="+cp);
    le xhr.responseText n'a rien à faire ici et le cp passé n'est relié à rien.

    Enfin dans ton script cfg.php, tu inscris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while($row = mysql_fetch_assoc($res)){
    	$row1 = strtr(utf8_encode($row['lat']),$accent,$sansaccent);
    	$row2 = strtr(utf8_encode($row['lon']),$accent,$sansaccent);
    	$row3 = strtr(utf8_encode($row['ville']),$accent,$sansaccent);
    	$row4 = strtr(utf8_encode($row['cp']),$accent,$sansaccent);
    	echo '<option value="'.$row.'"> '.$row3.' '.$row1.' '.$row2.' '.$row4.'</option>';
    		}
    $row est un tableau, donc tu ne peux pas le passer ainsi comme valeur de l'option.

    En résumé pour partir sur une base saine:
    1. Complète ton formulaire pour qu'il soit représentatif de ce que tu veux finalement. Les requêtes AJAX doivent idéalement te permettre de l'alimenter en données et non en code HTML
    2. crée un script PHP pour obtenir les villes et un autre pour avoir les infos complémentaires (ou un seul, mais alors tu devras renvoyer toutes les informations pour toutes les villes ce qui peut être conséquent)
    3. identifie les données correctes qui sont postées avec le formulaire
    4. Teste et renvoie l'ensemble dans ce post, et on pourra alors compléter pour le faire fonctionner


    Bon dev,

    ERE
    Quand une tête pense seule, elle devient folle.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Pilote Privé Avion - Instructeur ULM
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Pilote Privé Avion - Instructeur ULM
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Emmanuel, j'ai essayé de faire ce que tu m'a ecrit, j'ai essayé mais sans resultat. Cependent j'ai ajouté les trois champs input (lat, lon, et cp), j'ai aussi enlevé les lignes de code superflues lors de mes essais et j'ai re-crée un autre fichier appelé cfg2.php pour la Latitude, Longitude et Code Postal.
    Ceci dit, je n'ai rien compris...(he oui il y a encore des bleus comme moi).

    Voici les fichiers:

    index.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
    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
     
    <html>
    	<head>
    		<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
    		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    		<script type='text/javascript'>
     
    			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;
    			}
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			function recherche_villes(){
    				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){
    						leselect = xhr.responseText;
    						// On se sert de innerHTML pour rajouter les Villes a la liste
    						document.getElementById('nom_villes').innerHTML = leselect;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","cfg.php",true);
    				// ne pas oublier ça pour le post
    				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    				// ne pas oublier de poster les arguments
    				// ici, l'id du Département
    				sel = document.getElementById('departement');
    				id_departement = sel.options[sel.selectedIndex].value;
    				xhr.send("id_departement="+id_departement);
     
    			}
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			function go_latitude(){
    			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){
    						leselect = xhr.responseText;
    						// On se sert de innerHTML pour rajouter les Villes a la liste
    						document.getElementById('latitudes').innerHTML = leselect;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","cfg2.php",true);
    				// ne pas oublier ça pour le post
    				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    				// ne pas oublier de poster les arguments
    				// ici, l'id du Département
    				document.getElementById('lat').value
                    lat = sel.options[sel.selectedIndex].value;
                    xhr.send("lat="+lat);
     
    		}	
     
    		</script>
    	</head>
    	<body>
    		<form>
    			<fieldset style="width: 1000px">
    				<legend>Liste des Deparetments</legend>
    				<label>Choisir Departement</label>
    				<select name='departement' id='departement' onchange='recherche_villes()'>
    					<option value='-1'>Aucun</option>
    					<?
    						mysql_connect("localhost","root","bbjodel");
    						mysql_select_db("france");
    						$res = mysql_query("SELECT id_departement, nom_departement FROM departement ORDER BY id_departement");
    						while($row = mysql_fetch_assoc($res)){
    							$accent = "àáâãäåòóôõöøèéêëçìíîïùúûü";
    							$sansaccent = "ÀÁÂÃÄÅÒÓÔÕÖØÈÉÊËÇÌÍÎÏÙÚÛÜ";
    							$row1 = strtr(utf8_encode($row['id_departement']),$accent,$sansaccent);
    							$row2 = strtr(utf8_encode($row['nom_departement']),$accent,$sansaccent);
    							echo "<option value='".$row1."'>".$row2."</option>";
    						}
    					?>
    				</select>
    				<label>Villes</label>
    				<div id='nom_villes' style='display:inline'>
    				<select id="ville" name='ville'>
    					<option value='-1'>Choisir une Ville</option>
    				</select>	
    				</div>
     
     
     
    				<label>CP</label><input id="cp" name='cp' size="5">
    				<label>Lat</label><input id="lat" name='lat' size="8">
    				<label>Lon</label><input id="lon" name='lon' size="8">
     
    				</div>
     
    			</fieldset>
     
    		</form>
    	</body>
     
    </html>

    cfg.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
     
            echo "<select name='ville' id='ville' onchange='go_latitude()'>";
            if(isset($_POST["id_departement"]))
            {
                    
                    mysql_connect("localhost","root","bbjodel");
                    mysql_select_db("france");
                    
                    $res = mysql_query("SELECT ville FROM ville WHERE id_departement=".$_POST["id_departement"]." ORDER BY id_ville");
                    $accent = "àáâãäåòóôõöøèéêëçìíîïùúûü";
                    $sansaccent = "ÀÁÂÃÄÅÒÓÔÕÖØÈÉÊËÇÌÍÎÏÙÚÛÜ";
                    while($row = mysql_fetch_assoc($res)){
                            $row = strtr(utf8_encode($row['ville']),$accent,$sansaccent);
     
                            echo '<option value="'.$row.'"> '.$row.'</option>';
                    }
            }
            echo "</select>";
    ?>
    cfg2.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
     
    <?php
     
        echo "<select name='ville' id='ville'>";
            if(isset($_POST["lat"])){
                    
                    mysql_connect("localhost","root","bbjodel");
                    mysql_select_db("france");
                    
                    $res = mysql_query("SELECT lat FROM ville WHERE lat=".$_POST["lat"]." ORDER BY lat");
                    $accent = "àáâãäåòóôõöøèéêëçìíîïùúûü";
                    $sansaccent = "ÀÁÂÃÄÅÒÓÔÕÖØÈÉÊËÇÌÍÎÏÙÚÛÜ";
                    while($row = mysql_fetch_assoc($res)){
                            $row = strtr(utf8_encode($row['lat']),$accent,$sansaccent);
                            
                            echo '<option value="'.$row.'"> '.$row.'</option>';
                                    
                    }
            }
            echo "</select>";
            
    ?>
    J'ai mis echo "<select name='ville' id='ville' onchange='go_latitude()'>"; dans cfg.php pour appeler via la fonction go_latitude() le fichiers cfg2.php pour avoir la lat lon et cp

    Emmanuel, peut tu me donner un coup de main car je flanche...

    Amicalement Fred

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour et Bienvenue sur Developpez .
    cfg.php
    echo "<select name='ville' id='ville' onchange='go_latitude()'>";
    cfg2.php
    echo "<select name='ville' id='ville'>";
    1-Un id doit être unique dans un document.
    2-Evite d'utiliser le même valeur pour name et id.

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    <label>Lon</label><input id="lon" name='lon' size="8">

    </div>
    Le div en fin n'a pas de balise ouvrante.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Pilote Privé Avion - Instructeur ULM
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Pilote Privé Avion - Instructeur ULM
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 5
    Points
    5
    Par défaut Aide
    Re-bonjour a tous, j'ai fait les petites modifications que vous m'avez dit, j'ai reussi a avoir un champ qui se remplit, mais il ne change pas quand je choisis une autre ville, le champ en question est le champ lat.

    Je tiens a m'excuser auprés des moderateurs si j'ai fait une boulette...

    Fichier index.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
    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
    <head>
    		<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
    		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    		<script type='text/javascript'>
     
    			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;
    			}
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			function afficher_villes(){
    				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){
    						leselect = xhr.responseText;
    						// On se sert de innerHTML pour rajouter les Villes a la liste
    						document.getElementById('nom_villes').innerHTML = leselect;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","cfg.php",true);
    				// ne pas oublier ça pour le post
    				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    				// ne pas oublier de poster les arguments
    				// ici, l'id du Département
    				sel = document.getElementById('departement');
    				id_departement = sel.options[sel.selectedIndex].value;
    				xhr.send("id_departement="+id_departement);
     
    			}
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			function afficher_latitude(){
    			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){
    						leselect = xhr.responseText;
    						// On se sert de innerHTML pour rajouter la Latitude de la Ville
    						document.getElementById('latitudes').innerHTML = leselect;
     
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","cfg2.php",true);
    				// ne pas oublier ça pour le post
    				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    				// ne pas oublier de poster les arguments
    				// ici, l'id du Département
    				document.getElementById('ville');
                    nom_ville = sel.options[sel.selectedIndex].value;
                    xhr.send("nom_ville="+nom_ville);		
    		}	
     
    		</script>
    	</head>
    	<body>
    		<form>
    			<fieldset style="width: 1000px">
    				<legend>Liste des Deparetments</legend>
    				<label>Choisir Departement</label>
    				<select name='departement' id='departement' onchange='afficher_villes()'>
    					<option value='-1'>Aucun</option>
    					<?
    						mysql_connect("localhost","root","bbjodel");
    						mysql_select_db("france");
    						$res = mysql_query("SELECT id_departement, nom_departement FROM departement ORDER BY id_departement");
    						while($row = mysql_fetch_assoc($res)){
    							$accent = "àáâãäåòóôõöøèéêëçìíîïùúûü";
    							$sansaccent = "ÀÁÂÃÄÅÒÓÔÕÖØÈÉÊËÇÌÍÎÏÙÚÛÜ";
    							$row1 = strtr(utf8_encode($row['id_departement']),$accent,$sansaccent);
    							$row2 = strtr(utf8_encode($row['nom_departement']),$accent,$sansaccent);
    							echo "<option value='".$row1."'>".$row2."</option>";
    						}
    					?>
    				</select>
    				<label>Villes</label>
    				<div id='nom_villes' style='display:inline'>
    				<select id="ville" name='ville'>
    					<option value='-1'>Choisir une Ville</option>
    				</select>	
    				</div>
     
    				<div id='latitudes' style='display:inline'>
    				<select id="lat" name='lat'>
    					<option value='-1'>Latitude</option>
    				</select>
     
    				<div id='longitudes' style='display:inline'>
    				<select id="lon" name='lon'>
    					<option value='-1'>Longitude</option>
    				</select>
     
    			</fieldset>
     
    		</form>
    	</body>
    Fichier cfg.php

    Code PHP : 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
     
    	echo "<select name='ville' id='ville' onchange='afficher_latitude()'>";
    	if(isset($_POST["id_departement"]))
    	{
     
    		mysql_connect("localhost","root","bbjodel");
    		mysql_select_db("france");
     
    		$res = mysql_query("SELECT ville FROM ville WHERE id_departement=".$_POST["id_departement"]." ORDER BY id_ville");
    		$accent = "àáâãäåòóôõöøèéêëçìíîïùúûü";
    		$sansaccent = "ÀÁÂÃÄÅÒÓÔÕÖØÈÉÊËÇÌÍÎÏÙÚÛÜ";
    		while($row = mysql_fetch_assoc($res)){
    			$row = strtr(utf8_encode($row['ville']),$accent,$sansaccent);
     
    			echo '<option value="'.$row.'"> '.$row.'</option>';
    		}
    	}
    	echo "</select>";
    ?>
    Fichier cfg2.php

    Code PHP : 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
     
        echo "<select name='ma_ville' id='ma_ville'>";
    	if(isset($_POST["nom_ville"])){
     
    		mysql_connect("localhost","root","bbjodel");
    		mysql_select_db("france");
     
    		$res = mysql_query("SELECT lat FROM ville WHERE id_ville=".$_POST["nom_ville"]." ORDER BY id_ville");
    		$accent = "àáâãäåòóôõöøèéêëçìíîïùúûü";
    		$sansaccent = "ÀÁÂÃÄÅÒÓÔÕÖØÈÉÊËÇÌÍÎÏÙÚÛÜ";
    		while($row = mysql_fetch_assoc($res)){
    			$row = strtr(utf8_encode($row['lat']),$accent,$sansaccent);
    			echo '<option value="'.$row.'"> '.$row.'</option>';
     
    		}
    	}
    	echo "</select>";
     
    ?>
    Merci a vous de m'aider...

    Amicalement Fred

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Re,
    dans la fonction afficher_latitude()
    document.getElementById('ville');
    nom_ville = sel.options[sel.selectedIndex].value;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var sel = document.getElementById('ville');
                  var  nom_ville = sel.options[sel.selectedIndex].value;

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Pilote Privé Avion - Instructeur ULM
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Pilote Privé Avion - Instructeur ULM
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 5
    Points
    5
    Par défaut Liste deroulante
    Excusez moi, j'au tout essayé mais sans resultat....
    Il faut dire aussi que je suis un novice en php et ajax.

    Fred

  9. #9
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Re,
    Installe Firebug et cites nous les erreurs.

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

Discussions similaires

  1. [AJAX] Rafraichir la 2eme liste deroulante
    Par kagura dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/09/2007, 00h13
  2. expression reguliere appliquée sur une liste deroulante
    Par 18Marie dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 27/06/2006, 23h23
  3. ajax,rafraichissement avec une liste deroulante
    Par klimero dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/04/2006, 09h41
  4. [CSS] applique un style sur un liste deroulante sous Firefox
    Par dark_vidor dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 21/02/2006, 09h56
  5. etiquette ou label sur une liste deroulante
    Par camyo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 07/11/2005, 16h09

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