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 liées en AJAX


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    ...
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : ...

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Par défaut [AJAX] 3 Listes liées en AJAX
    Bonjour,

    J'essaye de lier 3 listes générées par une base de données. Jusqu'à maintenant j'ai réussis à lier deux listes : type_formation et niveau_formation. Cependant j'aimerai que niveau_formation soit lié à une autre liste qui est specification_formation. Voici le code que j'ai mis en place mais qui ne fonction que pour les 2 premières listes

    menu.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
    <html>
     
    	<head>
     
    		<title>Inscription</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;
    			}
     
    			function go_niveau()
    			{
    				var xhr = getXhr();
     
    				xhr.onreadystatechange = function()
    				{
    					if(xhr.readyState == 4 && xhr.status == 200)
    					{
    						leselect = xhr.responseText;
     
    						document.getElementById('niveau').innerHTML = leselect;
    					}
    				}
     
    				xhr.open("POST","menu_niveau.php",true);
     
    				xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
     
    				sel = document.getElementById('type');
     
    				id_type_formation_menu = sel.options[sel.selectedIndex].value;
     
    				xhr.send("id_type_formation_menu="+id_type_formation_menu);
    			}
     
    		</script>
     
    	</head>
     
    	<body>
     
    		<form>
     
    			<select name="type_formation" id="type" onchange="go_niveau()">
     
    				<option value="-1" selected="selected">Autre</option>
     
    				<?php
     
    					$Id = mysql_connect('localhost','root',"");
     
    					mysql_select_db("suiviautorisation",$Id);
     
    					$ReqSQL = "SELECT * FROM `type_formation_menu` ORDER BY `id_type_formation_menu`";
     
    					$Res = mysql_query($ReqSQL);
     
    					if($Res == false)
    					{
    						echo ("Erreur requete");
    					} 
    					while ($Ligne = mysql_fetch_array($Res))
    					{
    						echo("<option value=\"".$Ligne["id_type_formation_menu"]."\">".$Ligne["type_formation_menu"]."</option>");
    					}
     
    					mysql_close($Id);
     
    				?>
     
    			</select>
     
    			<div id="niveau">
     
    				<select name="niveau_formation">
     
    					<option value="-1" selected="selected">Autre</option>
     
    				</select>
     
    			</div>
     
    			<div id="specification">
     
    				<select name="specification_formation">
     
    					<option value="-1" selected="selected">Autre</option>
     
    				</select>
     
    			</div>
     
    		</form>
     
    	</body>
     
    </html>
    menu_niveau.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
    <script>
     
    	function go_specification()
    	{
    		var xhr = getXhr();
     
    		xhr.onreadystatechange = function()
    		{
    			if(xhr.readyState == 4 && xhr.status == 200)
    			{
    				leselect = xhr.responseText;
     
    				document.getElementById('specification').innerHTML = leselect;
    			}
    		}
     
    		xhr.open("POST","menu_specification.php",true);
     
    		xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
     
    		sel = document.getElementById('niveau');
     
    		id_niveau_formation_menu = sel.options[sel.selectedIndex].value;
     
    		xhr.send("id_niveau_formation_menu="+id_niveau_formation_menu);
    	}
     
    </script>
     
    <?php
     
    	echo ("<select name=\"niveau_formation\" id=\"niveau\" onchange=\"go_specification()\">");
     
    	if(isset($_POST["id_type_formation_menu"]))
    	{
    		$id_type_formation_menu = $_POST["id_type_formation_menu"];
     
    		$Id = mysql_connect("localhost","root","");
     
    		mysql_select_db("suiviautorisation",$Id);
     
    		$ReqSQL = "SELECT * FROM `niveau_formation_menu` WHERE `id_type_formation_menu` = '$id_type_formation_menu' ORDER BY `id_niveau_formation_menu`";
     
    		$Res = mysql_query($ReqSQL);
     
    		if($Res == false)
    		{
    			echo ("Erreur requete");
    		} 
    		while ($Ligne = mysql_fetch_array($Res))
    		{
    			echo("<option value=\"".$Ligne["id_niveau_formation_menu"]."\">".$Ligne["niveau_formation_menu"]."</option>");
    		}
     
    		mysql_close($Id);
     
    	}
     
    	echo "</select>";
     
    ?>
    menu_specification.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
    <?php
     
    	echo ("<select name=\"specification_formation\">");
     
    		if(isset($_POST["id_niveau_formation_menu"]))
    		{
    			$id_niveau_formation_menu = $_POST["id_niveau_formation_menu"];
     
    			$Id = mysql_connect("localhost","root","");
     
    			mysql_select_db("suiviautorisation",$Id);
     
    			$ReqSQL = "SELECT * FROM `specification_formation_menu` WHERE `id_niveau_formation_menu` = '$id_niveau_formation_menu' ORDER BY `id_specification_formation_menu`";
     
    			$Res = mysql_query($ReqSQL) or die(mysql_error());
     
    			if($Res == false)
    			{
    				echo ("Erreur requete");
    			} 
    			while ($Ligne = mysql_fetch_array($Res))
    			{
    				echo("<option value=\"".$Ligne["id_specification_formation_menu"]."\">".$Ligne["specification_formation_menu"]."</option>");
    			}
     
    			mysql_close($Id);
    		}
     
    	echo "</select>";
     
    ?>
    Merci de votre aide

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    tu ne récupères pas le paramètre correctement (tu pointes sur le div, au lieu du select qu'il contient ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sel = document.getElementById('niveau_formation');
    id_niveau_formation_menu = sel.options[sel.selectedIndex].value;
    xhr.send("id_niveau_formation_menu="+id_niveau_formation_menu);
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select id="niveau_formation" name="niveau_formation">
    A+

  3. #3
    Membre averti
    Femme Profil pro
    ...
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : ...

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Par défaut
    Mais en fait il pointait vers le bon endroit. En effet dans menu_niveau.php il y a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo ("<select name=\"niveau_formation\" id=\"niveau\" onchange=\"go_specification()\">");
    juste avant le if. Le select de niveau est généré depuis menu_niveau.php. C'est sûrement un autre souci car même en mettant le même id partout comme tu me le conseille, cela ne change pas.

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par titinesaku Voir le message
    C'est sûrement un autre souci
    Dans ce cas, oui : ton id="niveau" est dupliqué (c'est déjà celui du div)

    A+

  5. #5
    Membre averti
    Femme Profil pro
    ...
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : ...

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Par défaut
    Finalement en mettant les niveaux et spécifications dans le même fichier ça fonctionne. Pourtant il me reste un petit souci : j'aimerai pouvoir récupérer l'id_niveau (de la ligne 23, celui sélectionné par l'utilisateur) pour le mettre en condition dans les requêtes (exemple ligne 44) pour les spécifications. Voici le nouveau code :

    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
    <?php
     
    	echo ("<select name=\"niveau_formation\" id=\"niveau_formation\" onchange=\"go_specification()\">");
     
    	if(isset($_POST["id_type_formation_menu"]))
    	{
    		$id_type_formation_menu = $_POST["id_type_formation_menu"];
     
    		$Id = mysql_connect("localhost","root","");
     
    		mysql_select_db("suiviautorisation",$Id);
     
    		$ReqSQL = "SELECT * FROM `niveau_formation_menu` WHERE `id_type_formation_menu` = '$id_type_formation_menu' ORDER BY `id_niveau_formation_menu`";
     
    		$Res = mysql_query($ReqSQL);
     
    		if($Res == false)
    		{
    			echo ("Erreur requete");
    		} 
    		while ($Ligne = mysql_fetch_array($Res))
    		{
    			echo("<option value=\"".$Ligne["id_niveau_formation_menu"]."\">".$Ligne["niveau_formation_menu"]."</option>");
    		}
     
    		mysql_close($Id);
     
    	}
     
    	echo "</select><br/>";
     
    	echo ("<select name=\"specification_formation_1\">");
     
    	if(isset($_POST["id_type_formation_menu"]))
    	{
    		$id_type_formation_menu = $_POST["id_type_formation_menu"];
     
    		$Id = mysql_connect("localhost","root","");
     
    		mysql_select_db("suiviautorisation",$Id);
     
    		$ReqSQL = "SELECT * FROM `specification_formation_menu` 
    					WHERE `id_type_formation_menu` = '$id_type_formation_menu'
    					AND `id_niveau_formation_menu` = '$id_niveau_formation_menu'
    					ORDER BY `id_specification_formation_menu`";
     
    		$Res = mysql_query($ReqSQL);
     
    		if($Res == false)
    		{
    			echo ("Erreur requete");
    		} 
    		while ($Ligne = mysql_fetch_array($Res))
    		{
    			echo("<option value=\"".$Ligne["id_specification_formation_menu"]."\">".$Ligne["specification_formation_menu"]."</option>");
    		}
     
    		mysql_close($Id);
     
    	}
     
    	echo "</select><br/>";
     
    	echo ("<select name=\"specification_formation_2\">");
     
    	if(isset($_POST["id_type_formation_menu"]))
    	{
    		$id_type_formation_menu = $_POST["id_type_formation_menu"];
     
    		$Id = mysql_connect("localhost","root","");
     
    		mysql_select_db("suiviautorisation",$Id);
     
    		$ReqSQL = "SELECT * FROM `specification_formation_menu` 
    			WHERE `id_type_formation_menu` = '$id_type_formation_menu'
    			AND `id_niveau_formation_menu` = '$id_niveau_formation_menu'
    			ORDER BY `id_specification_formation_menu`";
     
    		$Res = mysql_query($ReqSQL);
     
    		if($Res == false)
    		{
    			echo ("Erreur requete");
    		} 
    		while ($Ligne = mysql_fetch_array($Res))
    		{
    			echo("<option value=\"".$Ligne["id_specification_formation_menu"]."\">".$Ligne["specification_formation_menu"]."</option>");
    		}
     
    		mysql_close($Id);
     
    	}
     
    	echo "</select><br/>";
     
    	echo ("<select name=\"specification_formation_3\">");
     
    	if(isset($_POST["id_type_formation_menu"]))
    	{
    		$id_type_formation_menu = $_POST["id_type_formation_menu"];
     
    		$Id = mysql_connect("localhost","root","");
     
    		mysql_select_db("suiviautorisation",$Id);
     
    		$ReqSQL = "SELECT * FROM `specification_formation_menu` 
    				WHERE `id_type_formation_menu` = '$id_type_formation_menu'
    				AND `id_niveau_formation_menu` = '$id_niveau_formation_menu'
    				ORDER BY `id_specification_formation_menu`";
     
    		$Res = mysql_query($ReqSQL);
     
    		if($Res == false)
    		{
    			echo ("Erreur requete");
    		} 
    		while ($Ligne = mysql_fetch_array($Res))
    		{
    			echo("<option value=\"".$Ligne["id_specification_formation_menu"]."\">".$Ligne["specification_formation_menu"]."</option>");
    		}
     
    		mysql_close($Id);
     
    	}
     
    	echo "</select>";
     
    ?>

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Si tu te retrouves toujours avec 2 id="niveau" dans ta page, tu auras quand même des problèmes ...

    A+

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

Discussions similaires

  1. [AJAX] 3 liste lièes en Ajax dont une qui reste vide
    Par mimotin dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 19/08/2008, 20h40
  2. [AJAX] Trois listes liées
    Par jason69 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/03/2007, 20h23
  3. [AJAX] plusieurs listes liées
    Par highman dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/03/2007, 10h31
  4. [AJAX] Listes liées
    Par oranocha dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/02/2007, 06h59
  5. [AJAX] Restaurer l'état de listes liées par Ajax
    Par vallica dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/10/2006, 13h36

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