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] 3 listes chainé


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 105
    Par défaut [AJAX] 3 listes chainé
    voila j'ai 3 listes (genre, espece, varieté).

    Quand je choisi un genre la liste epece se rempli (ca fonctionne)
    apres je choisi une espece et la liste variete doit se remplire (ca ne fonctionne pas).

    ca se compose en 3 feuilles

    genre.php : qui contient les 3 listes
    Ajaxespece.php et Ajaxvariete.php qui contiennent les requetes pour remplire les listes.

    genre.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
    <html>
    	<head>
    		<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
    		<script type='text/javascript'>
    			var xhr = null; 
     
    			function getXhr(){
    				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; 
    				} 
    			}
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			function go(){
    				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('espece').innerHTML = leselect;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","Ajaxespece.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('genre');
    				idgenre = sel.options[sel.selectedIndex].value;
    				xhr.send("idGenre="+idgenre);
    			}
    			function goesp(){
    				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('variete').innerHTML = leselect;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","Ajaxvariete.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('espece');
    				idesp = sel.options[sel.selectedIndex].value;
    				xhr.send("idEsp="+idesp);
    			}
    		</script>
    	</head>
    	<body>
    		<form>
    			<fieldset style="width: 500px">
    				<legend>Liste liées</legend>
    				<label>genre</label>
    				<select name='genre' id='genre' onchange='go()'>
    					<option value='-1'>Aucun</option>
    					<?
    						mysql_connect("localhost","root","");
    						mysql_select_db("CONFIDENTIEL");
    						$res = mysql_query("SELECT * FROM GENRE ORDER BY nomg");
    						while($row = mysql_fetch_assoc($res)){
    							echo "<option value='".$row["ng"]."'>".$row["nomg"]."</option>";
    						}
    					?>
    				</select>
    				<label>Espece</label>
    				<div id='espece' style='display:inline'>
    				<select name='espece'>
    					<option value='-1'>Choisir un auteur</option>
    				</select>
    				</div>
    				<label>Variete</label>
    				<div id='variete' style='display:inline'>
    				<select name='variete'>
    					<option value='-1'>Choisir un genre et une espece</option>
    				</select>
    				</div>
    			</fieldset>
    		</form>
    	</body>
    </html>

    Ajaxespece.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
     
    	echo "<select name='espece'  id='espece' onchange='goesp()'>";
    	if(isset($_REQUEST["idGenre"])){
    		mysql_connect("localhost","root","");
    		mysql_select_db("CONFIDENTIEL");
    		$res = mysql_query("SELECT * FROM espece WHERE ng=".$_REQUEST["idGenre"]." ORDER BY nome");
    		while($row = mysql_fetch_assoc($res)){
    			echo "<option value='".$row["ne"]."'>".$row["nome"]."</option>";
    		}
    	}
    	else
    		echo "<option value='-1'>Choisir un auteur</option>";
    	echo "</select>";
     
    ?>
    et Ajaxvariete.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
     
    	echo "<select name='variete'>";
    	if(isset($_REQUEST["idEsp"])){
    		mysql_connect("localhost","root","");
    		mysql_select_db("CONFIDENTIEL");
    		$res = mysql_query("SELECT * FROM variete WHERE ne=".$_REQUEST["idEsp"]." ORDER BY nomv");
    		while($row = mysql_fetch_assoc($res)){
    			echo "<option value='".$row["nv"]."'>".$row["nomv"]."</option>";
    		}
    	}
    	else
    		echo "<option value='-1'>Choisir un auteur</option>";
    	echo "</select>";
     
    ?>
    est ce que vous voyé dou vient le probleme????

    JJ

    ps : j'espere ne pas mettre trompé d'endroit pour posé ce poste

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 105
    Par défaut
    pour ces script je me suis inspirer du tuto de siddh "Web 2.0, allez plus loin avec AJAX et XMLHttpRequest"

    jj

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 105
    Par défaut
    c bon ca fonctionne bien
    erreur bete ma div et mon select on le meme nom.

    jj

  4. #4
    Invité de passage
    Profil pro
    Inscrit en
    Août 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 1
    Par défaut La réponse ?
    Salut jj del amorozo,
    J'ai le même problème que toi et je ne vois pas ce que tu entends par le même nom pour la div et pour le select ? Ils sont bien identiques pour la 2è liste donc je ne vois pas le problème. Est-il possible que tu poste la solution finale STP ?
    Merci d'avance.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 74
    Par défaut
    bonjour,

    J'utilise le même script avec trois listes chainées.
    Lorsque les selectionne une première fois dans l'ordre ça fonctionne bien, par contre, si je décide par ex de modifier la première liste, alors c'est là que ça coince.
    Quelqu'un voit-il le pb ? Merci par avance

  6. #6
    Membre expérimenté Avatar de romain_ci
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 262
    Par défaut
    Citation Envoyé par adr22 Voir le message
    bonjour,

    J'utilise le même script avec trois listes chainées.
    Lorsque les selectionne une première fois dans l'ordre ça fonctionne bien, par contre, si je décide par ex de modifier la première liste, alors c'est là que ça coince.
    Quelqu'un voit-il le pb ? Merci par avance

    As tu bien mis ta fonction Ajax sur le onchange de la liste ?

    Du genre :

    <select id="machin" name="truc" onchange="mafonctionAjax()">
    le principe du onchange c'est qu'a chaque fois que ta liste change de <option>, l'action se fait...

    Voila jespere repondre a ta question

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

Discussions similaires

  1. [AJAX] Listes chainées - Mauvaise actualisation d'un select
    Par tavarlindar dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/05/2008, 15h50
  2. Bibliothèque de listes chainées
    Par gege2061 dans le forum C
    Réponses: 29
    Dernier message: 17/12/2004, 20h15
  3. copie de liste chainée
    Par tomsoyer dans le forum C++
    Réponses: 15
    Dernier message: 31/08/2004, 18h20
  4. Trie liste chaine
    Par Congru dans le forum C
    Réponses: 2
    Dernier message: 30/03/2004, 19h05
  5. tri de liste chainée
    Par RezzA dans le forum C
    Réponses: 7
    Dernier message: 26/01/2003, 20h25

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