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

JavaScript Discussion :

Lier trois listes d�roulantes


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    483
    D�tails du profil
    Informations personnelles :
    �ge : 37

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Par d�faut Lier trois listes d�roulantes
    Bonjour,

    Avant toute remarque je pr�cise que j'ai d�j� recherch� sur le forum des posts similaires � mon probl�me mais qu'aucun n'a pu m'aider, et que j'ai d�j� lu le cours sur les listes li�es car je l'ai d�j� mis en place et �a marchait.


    Maintenant le pourquoi de mon post

    Voila j'affiche trois listes d�roulantes sur ma page, remplies via une requ�te SQL faite au serveur.

    Lorsque je s�lectionne une option dans la premi�re liste, la deuxi�me se r�duit comme je le veux.

    Par contre, je cherche � updater en m�me temps la troisi�me liste.
    �galement, lorsque je s�lectionne une option dans la deuxi�me, la troisi�me doit encore se modifier.

    Pour plus de compr�hension, la premi�re liste correspond aux types, la deuxi�mes aux projets et la troisi�me aux applications.
    L'encapsulation est la suivante : les applis sont regroup�es par projet, regroup�s eux m�me par type.

    En clair je souhaite que lorsqu'on s�lectionne un type, on ne voit plus que les projets et les applis correspondantes, et idem entre les projets et les applis.


    Voici mon code : (sans les options dans les listes pour ne pas encombrer)

    Tout d'abord la page principale :
    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
     
    <div style="display:inline;" >
    	<select name="appTypeName" onchange="updateProjectList(this.value);updateApplicationList(this.value, null);" >
    	</select>
    </div>
     
    <div style="display:inline;" id="projectList" >
    	<select name="projName" onchange="updateApplicationList(null, this.value);" >
    	</select>
    </div>
     
    <div style="display:inline;" id="applicationList" >
    	<select name="appName" >
    	</select>
    </div>


    Ensuite le script javascript qui contient les fonctions :
    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
     
    function getXhr() {
    	var xhr = null;
    	if(window.XMLHttpRequest) 
    		xhr = new XMLHttpRequest();
    	else if(window.ActiveXObject){ 
    		try {
    			xhr = new ActiveXObject("Msxml2.XMLHTTP");
    		}
    		catch (e) {
    			xhr = new ActiveXObject("Microsoft.XMLHTTP");
    		}
    	}
    	else {
    		alert("Your browser doesn't support XMLHTTPRequest objects ...");
    		xhr = false;
    	}
    	return xhr;
    }
     
     
    function updateProjectList(appTypeName){
    	var xhr = getXhr();
     
    	xhr.onreadystatechange = function(){
    		if(xhr.readyState == 4 && xhr.status == 200){
    			leselect = xhr.responseText;
    			document.getElementById('projectList').innerHTML = '';
    			document.getElementById('projectList').innerHTML = leselect;
    		}
    	}
     
    	xhr.open("POST","projectList.php",true);
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	xhr.send("appTypeName="+appTypeName);
    }
     
     
    function updateApplicationList(appTypeName, projName){
    	var xhr = getXhr();
     
    	xhr.onreadystatechange = function(){
    		if(xhr.readyState == 4 && xhr.status == 200){
    			leselect = xhr.responseText;
    			document.getElementById('applicationList').innerHTML = '';
    			document.getElementById('applicationList').innerHTML = leselect;
    		}
    	}
     
    	xhr.open("POST","applicationList.php",true);
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	xhr.send("appTypeName="+appTypeName+"&projName="+projName);
    }


    Je pense qu'il est inutile de mettre le script php qui update la liste des projets car cette partie fonctionne parfaitement, voila donc le script qui update la liste des applications :
    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
     
    <?php
    	/**
    	* This script modify the application list on the incident page according to the selected application's type and the selected project
    	*/
     
    	if (isset($_POST['appTypeName'] && isset($_POST['projName']))
    	{
    		require_once("../../scripts/functions.php");
    		require_once("../../scripts/values.env");
     
    		$appTypeName = unescapeForm($_POST['appTypeName']);
    		$projName = unescapeForm($_POST['projName']);
     
    		$connect = connection();
     
    		//we will display a list which contains all the project's names
    		echo '<select name="appName" >
    				<option value="" ></option>';
     
    		if ($projName == "" || $projName == null)
    		{
    			if ($appTypeName == "" || $appTypeName == null)
    			{
    				$sqlRequest = 'SELECT appName, projName FROM Application';
    			}
    			else
    			{
    				$sqlRequest = 'SELECT appName, projName FROM Application WHERE ProjName LIKE\'%'.escapeRequest($appTypeName).'/%\'';
    			}
    		}
    		else
    		{
    			$sqlRequest = 'SELECT appName, projName FROM Application WHERE ProjName=\''.escapeRequest($projName).'\'';
    		}
     
    		$res = request($connect, $sqlRequest);
     
    		//remplissage des listes
     
    		echo '</select>&nbsp;';
    	}
    	echo 'ok';
    ?>

    Voila. Ce que j'ai donc: la liste des projets est correctement updat�e, mais la liste des applications disparait (et il n'y a aucune erreur javascript)

    Merci d'avance pour votre aide car je cherche depuis hier soir sans r�sultat ...

  2. #2
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    Je me trompe peut-�tre, mais l'ajout d'une valeur null dans l'url pose peut-�tre un probl�me ?
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  3. #3
    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,
    es-tu s�r que cette requ�te fonctionne
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    $sqlRequest = 'SELECT appName, projName FROM Application WHERE ProjName LIKE\'%'.escapeRequest($appTypeName).'/%\'';
    Pour la tester, tape directement dans la barre d'adresse l'url qui la d�clenche :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    applicationList.php?appTypeName=appTypeName&projName=
    En mettant pour appTypeName une value d'option de
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <select name="appTypeName">
    EDIT : effectivement, comme param�tre, '' serait peut-�tre pr�f�rable � NULL ...

    A+

  4. #4
    Membre �clair�
    Inscrit en
    Avril 2007
    Messages
    483
    D�tails du profil
    Informations personnelles :
    �ge : 37

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Par d�faut
    Alors pour la requ�te je suis sur de moi, je l'ai test� avant dans la console oracle elle me retourne bien ce que je souhaite.

    J'ai essay� de remplacer le null par '' et j'ai le m�me r�sultat.


    Enfin, j'ai essay� de saisir l'url directement et j'ai eu comme r�sultat une page vierge alors que j'ai mis un � la fin en dehors du if (ce qui devrait afficher le ok dans tous les cas)
    J'ai donc repass� tout le dernier script que je vous ai mi dans le 1er post et il s'est av�r� qu'il manquait une parenth�se fermante .........
    Il n'y a donc aucun probl�me javascript tout marche � merveille !

    Merci � vous deux d'avoir r�pondu !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. lier une liste d�roulante et un simple texte HTML
    Par gregolak dans le forum G�n�ral JavaScript
    R�ponses: 4
    Dernier message: 23/07/2006, 15h42
  2. Lier checkbox, liste d�roulante et input texte
    Par pymouse dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 18/05/2006, 14h58
  3. Lier checkbox, liste d�roulante et input texte
    Par pymouse dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 8
    Dernier message: 18/05/2006, 11h32
  4. [PHP-JS] Lier deux listes d�roulantes
    Par budiste dans le forum Langage
    R�ponses: 6
    Dernier message: 15/11/2005, 15h36
  5. [WD5.5] Lier deux listes d�roulantes
    Par grellierj dans le forum WinDev
    R�ponses: 7
    Dernier message: 11/10/2005, 17h33

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