Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/07/2006, 19h08   #1
Membre du Club
 
Inscription : février 2006
Messages : 105
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 105
Points : 52
Points : 52
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 :
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 :
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 :
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
jj del amorozo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2006, 14h09   #2
Membre du Club
 
Inscription : février 2006
Messages : 105
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 105
Points : 52
Points : 52
pour ces script je me suis inspirer du tuto de siddh "Web 2.0, allez plus loin avec AJAX et XMLHttpRequest"

jj
jj del amorozo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2006, 18h40   #3
Membre du Club
 
Inscription : février 2006
Messages : 105
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 105
Points : 52
Points : 52
c bon ca fonctionne bien
erreur bete ma div et mon select on le meme nom.

jj
jj del amorozo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 01h36   #4
Invité de passage
 
Inscription : août 2007
Messages : 1
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 1
Points : 1
Points : 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.
flashlesson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2007, 11h52   #5
Membre à l'essai
 
Inscription : octobre 2003
Messages : 73
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 73
Points : 21
Points : 21
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
adr22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 09h34   #6
Membre confirmé
 
Avatar de romain_ci
 
Inscription : octobre 2007
Messages : 263
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2007
Messages : 263
Points : 261
Points : 261
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
romain_ci est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2007, 11h03   #7
Membre à l'essai
 
Inscription : octobre 2003
Messages : 73
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 73
Points : 21
Points : 21
Oui, j'ai bien mis la fonction dans le onchange().
Je pense avoir pourtant fait la meme chose pour ma 3ème liste que ce qui a été fait pour la 2ème...
La liaison entre la 1ere et la 2eme marche bien (logique, le code n'est pas de moi ), pour la 3ème rien ne se passe.
Merci pour votre aide.

Voici mon code :

fichier auteurs.php
Code :
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
 
<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(){
				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('livre').innerHTML = leselect;
					}
				}
 
				// Ici on va voir comment faire du post
				xhr.open("POST","ajaxLivre.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('auteur');
				idauteur = sel.options[sel.selectedIndex].value;
				xhr.send("idAuteur="+idauteur);
			}
 
			/**
			* Méthode qui sera appelée sur le click du bouton
			*/
			function go_duree(){
				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('duree').innerHTML = leselect;
					}
				}
 
				// Ici on va voir comment faire du post
				xhr.open("POST","ajaxDuree.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('livre');
				idlivre = sel.options[sel.selectedIndex].value;
				xhr.send("idLivre="+idlivre);
			}
 
 
 
		</script>
	</head>
	<body>
		<form>
			<fieldset style="width: 500px">
				<legend>Liste li&eacute;es</legend>
				<label>Auteurs</label>
				<select name='auteur' id='auteur' onchange='go()'>
					<option value='-1'>Aucun</option>
					<?
						mysql_connect("localhost","root","");
						mysql_select_db("listes");
						$res = mysql_query("SELECT * FROM auteur ORDER BY nom");
						while($row = mysql_fetch_assoc($res)){
							echo "<option value='".$row["id"]."'>".$row["nom"]."</option>";
						}
					?>
				</select>
				<label>Livres</label>
				<div id='livre' style='display:inline'>
				<select name='livre'>
					<option value='-1'>Choisir un auteur</option>
				</select>
				</div>
				<label>Duree</label>
				<div id='duree' style='display:inline'>
				<select name='duree'>
					<option value='-1'>Choisir une dur&eacute;e</option>
				</select>
				</div>
 
			</fieldset>
		</form>
	</body>
</html>
Fichier ajaxLivre.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<?php
	echo "<select name='livre' onchange='go_duree()'>";
	if(isset($_POST["idAuteur"])){
		mysql_connect("localhost","root","");
		mysql_select_db("listes");
		$res = mysql_query("SELECT id,titre FROM livre 
			WHERE idAuteur=".$_POST["idAuteur"]." ORDER BY titre");
		while($row = mysql_fetch_assoc($res)){
			echo "<option value='".$row["id"]."'>".$row["titre"]."</option>";
		}
	}
	echo "</select>";
?>
Fichier ajaxDuree.php
Code :
1
2
3
4
5
6
7
8
9
 
<?php
	echo "<select name='duree'>";
	if(isset($_POST["idLivre"])){
		?><option value="15">15</option>
		<option value="30">30</option><?php
	}
	echo "</select>";
?>
adr22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2009, 12h13   #8
Invité de passage
 
Inscription : octobre 2008
Messages : 18
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 18
Points : 4
Points : 4
Par défaut pré remplir les listes

Bonjour tout le monde,
j'ai utilisé votre script et ça marche très bien

j'ai un autre problème , je galère depuis qlq jours pour pré remplir mes listes, je m'explique j'ai un bouton "Modifier une activé" et je veux que mes listes prennent par défaut les valeurs de l'activité concerné par la modif
la premier liste est facile mais pour les 2 restantes je n'y arrive pas

Cordialement,
doounia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2012, 11h26   #9
Invité de passage
 
Homme
Étudiant
Inscription : février 2012
Messages : 1
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Côte d'Ivoire

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2012
Messages : 1
Points : 1
Points : 1
Par défaut Problème de connection base de données

J'ai essayé avec ce code mais j'ai l'impression que j'arrive pas à me connecter à ma base de données, car toutes mes listes déroulantes sont vides. Aidez-moi.

Citation:
Envoyé par adr22 Voir le message
Oui, j'ai bien mis la fonction dans le onchange().
Je pense avoir pourtant fait la meme chose pour ma 3ème liste que ce qui a été fait pour la 2ème...
La liaison entre la 1ere et la 2eme marche bien (logique, le code n'est pas de moi ), pour la 3ème rien ne se passe.
Merci pour votre aide.

Voici mon code :

fichier auteurs.php
Code :
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
 
<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(){
				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('livre').innerHTML = leselect;
					}
				}
 
				// Ici on va voir comment faire du post
				xhr.open("POST","ajaxLivre.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('auteur');
				idauteur = sel.options[sel.selectedIndex].value;
				xhr.send("idAuteur="+idauteur);
			}
 
			/**
			* Méthode qui sera appelée sur le click du bouton
			*/
			function go_duree(){
				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('duree').innerHTML = leselect;
					}
				}
 
				// Ici on va voir comment faire du post
				xhr.open("POST","ajaxDuree.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('livre');
				idlivre = sel.options[sel.selectedIndex].value;
				xhr.send("idLivre="+idlivre);
			}
 
 
 
		</script>
	</head>
	<body>
		<form>
			<fieldset style="width: 500px">
				<legend>Liste li&eacute;es</legend>
				<label>Auteurs</label>
				<select name='auteur' id='auteur' onchange='go()'>
					<option value='-1'>Aucun</option>
					<?
						mysql_connect("localhost","root","");
						mysql_select_db("listes");
						$res = mysql_query("SELECT * FROM auteur ORDER BY nom");
						while($row = mysql_fetch_assoc($res)){
							echo "<option value='".$row["id"]."'>".$row["nom"]."</option>";
						}
					?>
				</select>
				<label>Livres</label>
				<div id='livre' style='display:inline'>
				<select name='livre'>
					<option value='-1'>Choisir un auteur</option>
				</select>
				</div>
				<label>Duree</label>
				<div id='duree' style='display:inline'>
				<select name='duree'>
					<option value='-1'>Choisir une dur&eacute;e</option>
				</select>
				</div>
 
			</fieldset>
		</form>
	</body>
</html>
Fichier ajaxLivre.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<?php
	echo "<select name='livre' onchange='go_duree()'>";
	if(isset($_POST["idAuteur"])){
		mysql_connect("localhost","root","");
		mysql_select_db("listes");
		$res = mysql_query("SELECT id,titre FROM livre 
			WHERE idAuteur=".$_POST["idAuteur"]." ORDER BY titre");
		while($row = mysql_fetch_assoc($res)){
			echo "<option value='".$row["id"]."'>".$row["titre"]."</option>";
		}
	}
	echo "</select>";
?>
Fichier ajaxDuree.php
Code :
1
2
3
4
5
6
7
8
9
 
<?php
	echo "<select name='duree'>";
	if(isset($_POST["idLivre"])){
		?><option value="15">15</option>
		<option value="30">30</option><?php
	}
	echo "</select>";
?>
siecool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2012, 14h52   #10
Candidat au titre de Membre du Club
 
Femme
Inscription : janvier 2012
Messages : 29
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2012
Messages : 29
Points : 12
Points : 12
Tu as bien mis les bons identifiants de ta base ?
Ton script PHP est bien appelé ?

Essaye d'analyser ton processus grâce à FireBug et tu trouvera sûrement d'où vient ton problème
Neewd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2012, 09h28   #11
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 154
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 154
Points : 7 305
Points : 7 305
Bonjour,

Citation:
sel = document.getElementById('livre');
Citation:
echo "<select name='livre' onchange='go_duree()'>";
Ton select généré n'a pas d'id .

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h21.


 
 
 
 
Partenaires

Hébergement Web