1. #1
    Membre habitué
    Inscrit en
    janvier 2007
    Messages
    331
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 331
    Points : 151
    Points
    151

    Par défaut Lier 3 listes déroulantes

    Bonjour
    Je viens vers vous car je suis bloqué sur un script je viens de passer nuit blanche sans pouvoir le résoudre.

    Je suis entrain de creer 3 listes déroulantes liée,
    On sélectionne le pays puis la région puis enfin la ville

    Le premier du pays a la région ça marche niquel
    le probleme et le second qui ne marche pas, j'ai fait deux function bien distincte mais rien a faire voila le code de mes pages :

    j'ai bien entendu regarder la console firefox qui m'indique ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TypeError: sele is null[En savoir plus]  list_pays.php:76:5
    	go http://www.nomdusite/list_pays.php:76:5
    	onchange
    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
     
    <html>
    	<head>
    		<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
    		<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 go_pays(){
    				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 options a la liste
    						document.getElementById('auteure').innerHTML = leselect;
    					}
    				}
     
     
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","ajaxpays.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('pays');
    				idpays = sel.options[sel.selectedIndex].value;
    				xhr.send("idPays="+idpays);
     
    			}
     
    function go(){
    				var xhre = getXhr();
    				// On défini ce qu'on va faire quand on aura la réponse
    				xhre.onreadystatechange = function(){
    					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    					if(xhre.readyState == 4 && xhre.status == 200){
    						leselect = xhr.responseText;
    						// On se sert de innerHTML pour rajouter les options a la liste
    						document.getElementById('livre').innerHTML = leselect;
    					}
    				}
     
     
     
    				// Ici on va voir comment faire du post
    				xhre.open("POST","ajaxLivre.php",true);
    				// ne pas oublier ça pour le post
    				xhre.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    				// ne pas oublier de poster les arguments
    				// ici, l'id de l'auteur
    				sele = document.getElementById('auteur');
    				idauteur = sele.options[sele.selectedIndex].value;
    				xhre.send("idRegion="+idauteur);
     
    			}
    		</script>
    	</head>
    	<body><style type="text/css">
     
    #li
    {
      height:2em;
    }
     
    #li select
    {
      display:none;
    }
     
    </style>
    		<form>
    			<fieldset style="width: 100%">
    				<legend>Liste liées</legend>
    <label>Pays</label>
    				<select name='pays' id='pays' onchange='go_pays()'>
    					<option value='-1'>Choisir une Pays</option>
    					<?
    include("mysqlcon.php");
    						$res = mysql_query("SELECT * FROM pays ORDER BY id");
    						while($row = mysql_fetch_assoc($res)){
    							echo "<option value='".$row["id"]."'>".$row["nom_pays"]."</option>";
    						}
    					?>
    				</select>
    				<label>Region</label>
    <div id='auteure' style= 'display:inline'>
    				<select name='auteur' id='auteur' onchange='go()'>
    					<option value='-1'>Choisir une Region</option>
     
    				</select>
    </div>
    				<label>Ville</label>
    				<div id='livre' style= 'display:inline'>
    				<select name='livre' id='livre' disabled='disabled'>
    					<option value='-1'>Choisir un auteur</option>
    				</select>
    				</div>
    			</fieldset>
    		</form>
    	</body>
    </html>
    puis les deux pages appeller ajaxlivre.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    	echo "<select name='livre'";
    	if(isset($_POST["idRegion"])){
    		include("mysqlcon.php");
    		$res = mysql_query("SELECT id,region FROM livre 
    			WHERE idRegion=".$_POST["idRegion"]."");
    		while($row = mysql_fetch_assoc($res)){
    			echo "<option value='".$row["id"]."'>".$row["region"]."</option>";
    		}
    	}
    	echo "</select>";
    ?>
    et ajaxpays.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    	echo "<select name='auteur'  onchange='go()'";
    	if(isset($_POST["idPays"])){
    		include("mysqlcon.php");
    		$res = mysql_query("SELECT * FROM auteur 
    			WHERE idPays=".$_POST["idPays"]);
    		while($row = mysql_fetch_array($res)){
    			echo "<option value='".$row["id"]."'>".$row["nom_region"]."</option>";
    		}
    	}
    	echo "</select>";
    ?>
    merci d'avance de votre aides

  2. #2
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : septembre 2008
    Messages : 226
    Points : 327
    Points
    327

    Par défaut

    Bonjour,

    Tu pourrais être plus clair s'il te plait…

    « Le premier du pays a la région ça marche niquel » c'est-à-dire ? Tu as une liste d'options qui apparait pour la région ?

    Et lorsque que tu cliques sur région il fait quoi ? Tu as un retour de ta requête Ajax ?

    Sinon de base tu dupliques ton code or que tu pourrais le factoriser autant t'es deux fonctions JavaScript « go » et « go_pays » que t'es codes PHP…

    Sinon tu écris en brut le select name='auteur' dans ton HTML pour après le réécrire de façon différente, parce qu'il n'y a plus l'attribut id ?
    Vous cherchez à apprendre les bases en langage « C », « Go », « Rust », « PHP 7 », « Java 9 » ou « Python 3 » ? N'hésitez pas à me contacter par MP.

  3. #3
    Membre habitué
    Inscrit en
    janvier 2007
    Messages
    331
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 331
    Points : 151
    Points
    151

    Par défaut

    quand je dis que ça marche niquel c'est que si je choisi un pays, il y a bien des regions qui s'affiche
    mais si je choisi la region il y a rien qui se passe

  4. #4
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : septembre 2008
    Messages : 226
    Points : 327
    Points
    327

    Par défaut

    D'accord toulousain,

    Ma dernière phrase dit :
    Sinon tu écris en brut le select name='auteur' dans ton HTML pour après le réécrire de façon différente, parce qu'il n'y a plus l'attribut id ?

    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sele = document.getElementById('auteur');
    Renvoi nul ou non défini, parce qu'il n'existe plus.

    Dans ta page PHP tu as bien fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<select name='auteur'  onchange='go()'";
    Au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<select name='auteur' id='auteur' onchange='go()'>";
    Edit : ici il manque aussi le chevron de fermeture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<select name='livre'";
    Vous cherchez à apprendre les bases en langage « C », « Go », « Rust », « PHP 7 », « Java 9 » ou « Python 3 » ? N'hésitez pas à me contacter par MP.

  5. #5
    Membre habitué
    Inscrit en
    janvier 2007
    Messages
    331
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 331
    Points : 151
    Points
    151

    Par défaut

    merci pour le chevron de fermeture je n'avais pas vue

    j'ai bien rajouté l'attribut et cela marche, mais j'ai un autre souci qui s'est formé,

    je n'ai pas tous mes enregistrements qui s'affiche,

    En gros quand je sélectionne france il devait y avoir 3 enregistrement et idem pour Madagascar,
    et pareil pour les regions tous n'est pas affiché

  6. #6
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : septembre 2008
    Messages : 226
    Points : 327
    Points
    327

    Par défaut

    Commence par vérifier si tes requêtes SQL renvoi bien tout les résultats
    Vous cherchez à apprendre les bases en langage « C », « Go », « Rust », « PHP 7 », « Java 9 » ou « Python 3 » ? N'hésitez pas à me contacter par MP.

  7. #7
    Membre habitué
    Inscrit en
    janvier 2007
    Messages
    331
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 331
    Points : 151
    Points
    151

    Par défaut

    oui oui tous est renvoyer, j'avais déjà verifier avant de modifier le js

  8. #8
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : septembre 2008
    Messages : 226
    Points : 327
    Points
    327

    Par défaut

    Et si tu fais :
    Ça renvoi tout ?
    Vous cherchez à apprendre les bases en langage « C », « Go », « Rust », « PHP 7 », « Java 9 » ou « Python 3 » ? N'hésitez pas à me contacter par MP.

  9. #9
    Membre habitué
    Inscrit en
    janvier 2007
    Messages
    331
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 331
    Points : 151
    Points
    151

    Par défaut

    c'est bon, j'ai trouver c'etais un chevron mal fermé dans le script merci beaucoup de ton aide

  10. #10
    Membre habitué
    Inscrit en
    janvier 2007
    Messages
    331
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 331
    Points : 151
    Points
    151

    Par défaut

    Je Reouvre le topic car je voudrais réajouter une 4 eme listes en fonction du pays je m'explique. le site que je veux monter un site franco/malgache

    et a madagascar les régions ne sont pas pareil qu'en france donc la liste que je veux monté est :


    Le visiteur séléctionne Madagascar qui ouvre ensuite la liste des régions, et donc les villes en fonction des régions
    et ça ce complique quand le visiteur sélectionne la france

    donc il Choisi le pays la france qui ouvre une liste région, qui ouvre une liste departement et enfin les villes

    j'ai plusieurs table
    departement avec les départements francais
    maps_ville avec les villes françaises
    region avec les regions française ET malgache
    et enfin une derniere table avec les villes malgaches

    donc en reprenant le même code que tous à l'heure comment je faire en sorte de relier les listes entre elles

  11. #11
    Membre habitué
    Inscrit en
    janvier 2007
    Messages
    331
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 331
    Points : 151
    Points
    151

    Par défaut

    je referme ce topic car j'ai trouver la solution merci a tous

  12. #12
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    janvier 2011
    Messages
    12 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : janvier 2011
    Messages : 12 012
    Points : 32 191
    Points
    32 191

    Par défaut

    Bonjour,
    il eut été intéressant que tu nous présentes ta solution elle pourrait en aider d'autre !

  13. #13
    Membre habitué
    Inscrit en
    janvier 2007
    Messages
    331
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 331
    Points : 151
    Points
    151

    Par défaut

    je m'en suis simplement contenu a 3 boites car les tables des villes malgache etait trés differente

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

Discussions similaires

  1. lier une liste déroulante et un simple texte HTML
    Par gregolak dans le forum JavaScript
    Réponses: 4
    Dernier message: 23/07/2006, 16h42
  2. Lier checkbox, liste déroulante et input texte
    Par pymouse dans le forum JavaScript
    Réponses: 2
    Dernier message: 18/05/2006, 15h58
  3. Lier checkbox, liste déroulante et input texte
    Par pymouse dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 18/05/2006, 12h32
  4. [PHP-JS] Lier deux listes déroulantes
    Par budiste dans le forum Syntaxe
    Réponses: 6
    Dernier message: 15/11/2005, 16h36
  5. [WD5.5] Lier deux listes déroulantes
    Par grellierj dans le forum WinDev
    Réponses: 7
    Dernier message: 11/10/2005, 18h33

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