une liste liée a 2 listes

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : une liste liée a 2 listes

par sasg » 14 sept. 2006, 17:08

je n'arrive toujours pas lier ma 3 listes

le javascript:

Code : Tout sélectionner

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('st_ct').innerHTML = leselect; } } // Ici on va voir comment faire du post xhr.open("POST","ST_CT.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 client sel = document.getElementById('client'); alert(sel); num_c = sel.options[sel.selectedIndex].value; xhr.send("Num_c="+num_c ); } function go_st(){ 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){ leselect1 = xhr.responseText; // On se sert de innerHTML pour rajouter les options a la liste document.getElementById('contact').innerHTML = leselect1; } } // Ici on va voir comment faire du post xhr.open("GET","CT.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 sous traitant sel1 = document.getElementById('sstraitant'); num_st = sel1.options[sel1.selectedIndex].value; alert(num_st); xhr.send("st="+num_st ); }
index.php
<form method="post" action="index.php">
			<fieldset style="width: 900px">
				<legend>Liste liées</legend>
				<label>Client</label>
				<select name='client' id='client' onchange='go();'>
					<option value='-1'>Aucun</option>
					<?
						mysql_connect("localhost","root","");
						mysql_select_db("cemi");
						$res = mysql_query("SELECT * FROM `t_client` ORDER BY `cl_raison`");
						while($row = mysql_fetch_assoc($res)){
							echo "<option value='".$row["N°"]."'>".$row["cl_raison"]."</option>\n";
						}
					?>
				</select>
				
				<div id="st_ct">
				
				</div><!--fin st_ct-->
			</fieldset>
			<input type="submit" value="ok">
		</form>
ST_CT.php
echo "<label>Sous-traitant</label>
				<div id='sstraitant' style='display:inline' onchange='go_st();'>";
	echo "<select name='st'>";
	//$numcli = 6484;
	if(isset($_POST["Num_c"])){
		mysql_connect("localhost","root","");
		mysql_select_db("cemi");
		$res = mysql_query("SELECT `codest` FROM t_lieclst 
			WHERE codeclient=".$_POST["Num_c"]);
			echo "<option value='0'>Aucun</option>\n";
		while($row = mysql_fetch_array($res))
		{
			$codest=$row["codest"]."<br>";
			$res = mysql_query("SELECT `N°`,`cl_nomst` FROM t_soustraitants
			WHERE `N°`='$codest' ORDER BY `cl_nomst`");
			while($row = mysql_fetch_array($res))
			{
			echo "<option value='".$row["N°"]."'>".$row["N°"]."</option>\n";
			}
			
		}
	}
	echo "</select></div>";
	echo "<div>";
echo "<label>Contact</label>
<div id='contact' style='display:inline'>
<select name='contact'>";
echo "<option value='0'>Aucun</option>\n";
	if(isset($_POST["Num_c"])){
		mysql_connect("localhost","root","");
		mysql_select_db("cemi");
		$res = mysql_query("SELECT `N°`,`nom_ct` FROM t_contacts 
			WHERE numclient=".$_POST["Num_c"]." ORDER BY `nom_ct`");
		while($row = mysql_fetch_assoc($res)){
			echo "<option value='".$row["N°"]."'>".$row["nom_ct"]."</option>\n";
		}
	};
	echo"</div></div>";
CT.php
echo "<select name='contact'>";
if(isset($_POST["st"])){
		mysql_connect("localhost","root","");
		mysql_select_db("cemi");
		$res = mysql_query("SELECT `N°`,`contact` FROM t_soustraitants 
			WHERE `N°`=".$_POST["st"]." ORDER BY `nom_ct`");
		while($row = mysql_fetch_assoc($res)){
		echo "<option value='0'>Aucun</option>\n";
			echo "<option value='".$row["N°"]."'>".$row["contact"]."</option>\n";
		}
	}
	echo "</select>";
dans la console javascript j'ai une erreur sur

Code : Tout sélectionner

num_st = sel1.options[sel1.selectedIndex].value;
dans la fonction go_st()

C'est peut etre pas tres propre mais ca va me permetre au moins d'aller dans le bon chemin

:( :(

par Cyrano » 13 sept. 2006, 15:56

As-tu parcouru les sujets dans le forum FAQ ? Les éléments pour la réponse à ta question s'y trouvent, en trois exemplaire même dont un pour AJAX.

une liste liée a 2 listes

par sasg » 13 sept. 2006, 14:34

Bonjour,

C 'est mon premier post dans cette partie du forum :D!

j'aimerais lier une liste a 2 autres listes mais je n'arrive pas a le faire!

index.php
<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;
						//leselect1 = xhr.responseText;
						// On se sert de innerHTML pour rajouter les options a la liste
						document.getElementById('st').innerHTML = leselect;
						//document.getElementById('contact').innerHTML = leselect1;
						
						
					}
				}

				// Ici on va voir comment faire du post
				xhr.open("POST","ST.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('client');
				num_c = sel.options[sel.selectedIndex].value;
				xhr.send("Num_c="+num_c );
							
				
				// Ici on va voir comment faire du post
				xhr.open("POST","CT.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('client');
				num_c = sel.options[sel.selectedIndex].value;
				xhr.send("Num_c="+num_c );
			}
		</script>
	</head>
	<body>
		<form>
			<fieldset style="width: 500px">
				<legend>Liste liées</legend>
				<label></label>
				<select name='client' id='client' onchange='go()'>
					<option value='-1'>Aucun</option>
					<?
						mysql_connect("localhost","root","");
						mysql_select_db("demi");
						$res = mysql_query("SELECT * FROM `t_client` ORDER BY `cl_raison`");
						while($row = mysql_fetch_assoc($res)){
							echo "<option value='".$row["N°"]."'>".$row["cl_raison"]."</option>\n";
						}
					?>
				</select>
				<label>Sous-traitant</label>
				<div id='st' style='display:inline'>
						<select name='st'>
						<option value='-1'>Choisir un client</option>
					</select>
				</div>
				<label>Contact</label>
				<div id='contact' style='display:inline'>
						<select name='contact'>
						<option value='-1'>Choisir un auteur</option>
					</select>
				</div>
			</fieldset>
		</form>
	</body>
</html>
ST.php
echo "<select name='st'>";
	//$numcli = 6484;
	if(isset($_POST["Num_c"])){
		mysql_connect("localhost","root","");
		mysql_select_db("demi");
		$res = mysql_query("SELECT `codest` FROM t_lieclst 
			WHERE codeclient=".$_POST["Num_c"]);
		while($row = mysql_fetch_array($res))
		{
			$codest=$row["codest"]."<br>";
			$res = mysql_query("SELECT `N°`,`cl_nomst` FROM t_soustraitants
			WHERE `N°`='$codest' ORDER BY `cl_nomst`");
			while($row = mysql_fetch_array($res))
			{
			echo "<option value='".$row["N°"]."'>".$row["cl_nomst"]."</option>\n";
			//echo $ct=$row["cl_nomst"]."<br>";
			}
			
		}
	}
	echo "</select>";
CT.php
echo "<select name='contact'>";
	if(isset($_POST["Num_c"])){
		mysql_connect("localhost","root","");
		mysql_select_db("demi");
		$res = mysql_query("SELECT `N°`,`nom_ct` FROM t_contacts 
			WHERE numclient=".$_POST["Num_c"]." ORDER BY `nom_ct`");
		while($row = mysql_fetch_assoc($res)){
			echo "<option value='".$row["N°"]."'>".$row["nom_ct"]."</option>\n";
		}
	}
	echo "</select>";
j'aimerais que la liste client soit donc liée a celle de contact et soustraitant!
mais je ne connais pas grand chose en javascript.

Merci aux bonnes ames qui voudront bien m'aider!