Partage
  • Partager sur Facebook
  • Partager sur Twitter

3 listes déroulantes liées

souci avec la 3eme

Sujet résolu
    6 mai 2010 à 8:54:17

    Bonjour à tous,

    Problème qui revient souvent, mais j'ai beau chercher sur le net ou regarder et reregarder les tuto je n'arrive pas à régler mon problème.
    Voilà j'ai trois listes déroulantes liées et qui vont chercher leurs sources dans une bdd.
    Type -> Numero -> Utilisateurs

    Les deux premières fonctionnent du tonnerre :D mais la troisième ne se charge pas :( pourtant aucune erreur IE, elle ne se charge juste pas.
    Je vous met donc le code JS pour mes deux fonctions :
    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('Matricule').innerHTML = leselect;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","AjaxType.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'utilisateur
    				sel = document.getElementById('Type');
    				idType = sel.options[sel.selectedIndex].value;
    				xhr.send("idType="+idType);
    				
    			}
    
    						function go2(){
    				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('Utilisateur').innerHTML = leselect;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","AjaxMatricule.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'utilisateur
    				idMatricule = document.getElementById('Matricule').value;
    			//	idMatricule = sel.options[sel.selectedIndex].value;
    				xhr.send("idMatricule="+idMatricule);
    				
    			}
    


    Le code php de mes listes déroulantes :
    echo("<TD class=\"Libelle\">Type : </TD>");
    						echo("<TD><SELECT name=\"Type\" id=\"Type\" onChange=\"go()\">");
    						echo("<OPTION>-- Choisissez un Type ---</OPTION>");
    						echo("<OPTION>");
    							$Id = odbc_connect ( "reseau" ,  "reseau", "clf" ) ;
    							//$Req="SELECT Date_intervention,Remarque from Intervention WHERE Date_intervention <'$date'ORDER BY Date_intervention"
    							$Req=" SELECT Type FROM Type";
    									$result =odbc_do($Id, $Req ) ;
    										while(odbc_fetch_row($result))
    											{
    												/*$Nom=trim(odbc_result($result, 1));
    												$Prenom=trim(odbc_result($result, 2));
    												$User=$Nom.",".$Prenom.",";*/
    												$Type=trim(odbc_result($result,1));
    												echo("<OPTION value=\"$Type\">$Type ");
    												
    											}
    						echo("</select></td>");
    						echo("</tr>");
    						echo("</tr>");
    						echo("<td class=\"Libelle\">Matricule :</td>");
    						echo("<TD class=\"Libelle\" id=\"Matricule\"  onChange=\"go2()\" style=\"display:inline\"> ");
    						echo("<SELECT name=\"Matricule\">");
    						echo("<OPTION value='-1'>-- Choisissez un Matricule ---</OPTION>");
    						echo("</select></td>");
    						echo("</TR>");
    						echo("<td class=\"Libelle\">Utilisateur :</td>");
    						echo("<TD class=\"Libelle\" id=\"Utilisateur\"  style=\"display:inline\"> ");
    						echo("<SELECT name=\"Utilisateur\">");
    						echo("<OPTION value='-1'>-- Choisissez un Utilisateur ---</OPTION>");
    						echo("</select></td>");
    						echo("</TR>");
    

    Le code qui traite la premiere et seconde liste :
    <?php
    	$Type=$_POST["idType"];
    	echo($Type);
    	echo("<select name=\"Matricule\" id=\"Matricule\" onChange=\"go2()\">");
    	echo("<option value='-1'>Choisir un Matricule</option>");
    	if(isset($_POST["idType"]))
    	{
    		$Type=$_POST["idType"];
    		
    	/*	$Nom .=" <END>";
    		$Res=strtok ($Nom,",");  
    		$Nom=$Res;
    		$nom_user=$Nom;
    		$Res=strtok(",");
    		$Prenom=$Res;
    		$prenom_user=$Prenom;
    		print($nom_user);
    		print($prenom_user);*/
    		//print($Nom);
    		$Id = odbc_connect ( "reseau" ,  "reseau", "clf" ) ;
    		$Req=" SELECT distinct Num_Ecs FROM Materiel Where Type='$Type' ORDER BY Num_Ecs";
    		$result =odbc_do($Id, $Req ) ;
    		while(odbc_fetch_row($result))
    		{
    				$Matricule=odbc_result($result, 1);								
    				echo("<OPTION value=\"$Matricule \"> $Matricule ");
    												
    		}
    		echo("</select>");
    


    Et pour finir (autant etre complet) le code de ma deuxieme et troisieme liste :
    <?php
    	$Matricule=$_POST["idMatricule"];
    	echo($Matricule);
    	echo("<select name=\"Utilisateur\" id=\"Utilisateur\" >");
    	echo("<option value='-1'>Choisir un Utilisateur</option>");
    	if(isset($_POST["idMatricule"]))
    	{
    		$Matricule=$_POST["idMatricule"];
    		print("toto");
    	/*	$Nom .=" <END>";
    		$Res=strtok ($Nom,",");  
    		$Nom=$Res;
    		$nom_user=$Nom;
    		$Res=strtok(",");
    		$Prenom=$Res;
    		$prenom_user=$Prenom;
    		print($nom_user);
    		print($prenom_user);*/
    		//print($Nom);
    		$Id = odbc_connect ( "reseau" ,  "reseau", "clf" ) ;
    		$Req=" SELECT Nom_User,Prenom_User FROM Materiel Where Num_Ecs='$Matricule' ORDER BY Nom_User";
    		$result =odbc_do($Id, $Req ) ;
    		while(odbc_fetch_row($result))
    		{
    				$Nom=trim(odbc_result($result,1));								
    				$Prenom=trim(odbc_result($result,2));	
    				User=$Nom.",".$Prenom.",";
    				echo("<OPTION value=\"$User \"> $User ");
    												
    		}
    		echo("</select>");
    


    J'ai donc voulu faire un test et apparement ma valeur de la deuxieme liste n'est même pas renvoyer. Help please :(
    • Partager sur Facebook
    • Partager sur Twitter
      14 mai 2010 à 17:38:53

      Tu as mis le onchange sur le <td> et non le <select> >_<
      • Partager sur Facebook
      • Partager sur Twitter
        15 mai 2010 à 16:18:48

        Merci pour ta réponse. N'ayant pas réussi sur le coup, j'ai changé ma manière de faire. Mais je vais garder le code la avec ta réponse, ca peut toujours servir!
        Je te remercie!
        • Partager sur Facebook
        • Partager sur Twitter

        3 listes déroulantes liées

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown