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 :

1 Liste -> plusieurs listes


Sujet :

JavaScript

  1. #1
    Mil
    Mil est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 32
    Par défaut 1 Liste -> plusieurs listes
    C est à nouveau moi et mes pb d XMLHTTPREquest (Siddh va s arracher les cheveux de voir que je suis à nouveau là).
    Bon et bien je ne m en sors pas ...

    J ai trois menus déroulants : l1, l2 (qui dépend de l1) et l3 (qui dépend de l1).
    Je veux donc que l2 et l3 soient chargés en fonction de la valeur selectionnée dans l1.
    Siddh m a beaucoup aidé et pour l2 ça fonctionne ... Mais j ai du mal à voir comment faire cela pour deux listes en mm temps car je ne crois pas quon puisse déclarer 2 XMLHTTPRequest.

    Voici le code pour l2 :
    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
    <?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();
    				if(xhr){
    					// 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;
                                                            document.getElementById("machine").innerHTML = leselect;
     
    					}
     
    					// Ici on va voir comment faire du post
    					xhr.open("POST","species.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 lieu
    					sel = document.getElementById('lieu');
    					idlieu = sel.options[sel.selectedIndex].value;
    					xhr.send("idLieu="+idlieu);
        }
    				else // xhr n'existe pas
    					alert("Problème avec le XMLHTTPRequest.");
     
    			}
    		</script>
    	</head>
    	<body>
    		<form>
    			<fieldset style="width: 500px">
    				<legend>Liste liées</legend>
    				<label>Lieu</label>
    				<select name='lieu' id='lieu' onchange='go()'>
    					<option value='-1'>choisir un lieu</option>
    					<option value='1'>France</option>
    					<option value='2'>Angleterre</option>
    				</select>
    				<div id='machine' style='display:inline'>
    <select name='machine'>
          <option value='-1'>Choisir une machine</option>
    </select>
    </div>
    			</fieldset>
    		</form>
    	</body>
    </html>
               <?php ?>
    species.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
    <?php
            if(isset($_POST['idLieu'])){
                    mysql_connect("localhost","root","pass");
                    mysql_select_db("maintenance");
                    $res = mysql_query("SELECT id_machine,nom FROM machine
                            WHERE id_lieu='".$_POST['idLieu']."' ORDER BY id_machine");
     
            echo "<select name='machine'>";
          while($row = mysql_fetch_assoc($res)){
             echo "<option value='".$row['id_machine']."'>".$row['nom']."</option>";
          }
          echo "</select>";
                    mysql_close();
            }
    ?>
    Merci d avance

  2. #2
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    Salut,

    J'utilise le xmlhttprequest sans xml moi (j'avais pas le temps )
    Ma page appelée retourne une chaîne du genre : Array("1","2","3","4")##Array("val1","val2","val3","val4")
    Ensuite je passe cette chaîne à une fonction, la découpe grâce au ## qui me sert de séparateur et fait ensuite un eval des Array().
    Pour ensuite créer les listes:
    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
    function AffListe(requete) {
    	var tab = requete.split("##");
    	var idLst = eval(tab[0]);
    	var libLst = eval(tab[1]);
    	if (idLst[0] && libLst[0]) {
    		var element = document.createElement("option");
    		element.appendChild(document.createTextNode(''));
    		element.value = 0;
    		document.getElementById('maLsite').appendChild(element);
    		for (i in idLst) {
    			var element = document.createElement("option");
    			element.appendChild(document.createTextNode(libLst[i]));
    			element.value = idLsti[i];
    			document.getElementById('maListe').appendChild(element);
    		}
    	} else {
    		//initialisation
    		var Node = document.getElementById("maListe");
    		var NodeListe = Node.childNodes;
    		while(Node.hasChildNodes()==true){
    			var Enfant = NodeListe.item(0);
    			Node.removeChild(Enfant);
    		}
    		document.getElementById("maListe").style.display = "none";
    	}
    C'est un copier/coller/trafiquer rapide. Donc c'est juste pour donner une piste. L'idée étant de composer une chaîne depuis ton PHP avec 2 tableaux javascript pour chaque liste.

    En espérant t'aider.

  3. #3
    Mil
    Mil est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 32
    Par défaut
    Merci beaucoup ..
    Je sais pas si c est la solution la plus propre mais au moins j ai un truc qui marche .
    J avais vraiment pas pensé à jouer sur les chaines de caractères ...

    En fait dans species.php, rajouté après le select des machines Chose que j ai peu de chance de rencontrer dans mes données.
    Puis j y ai accolé un select pour les autres données que j ai à récupérer.
    Dans le fichier principal je n ai plus qu à faire un split avec comme séparateur "####" et ça fonctionne !

    Merci de m avoir mis sur cette voie !

  4. #4
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    résolu?

  5. #5
    Mil
    Mil est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 32
    Par défaut
    Désolée j ai zappé de mettre Résolu

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

Discussions similaires

  1. [AC-2003] Tri d'une zone de liste par plusieurs listes déroulantes
    Par mploki dans le forum IHM
    Réponses: 5
    Dernier message: 11/03/2011, 15h40
  2. plusieurs Listes dans une liste
    Par mnemonic78 dans le forum Struts 1
    Réponses: 16
    Dernier message: 08/08/2007, 18h09
  3. Réponses: 4
    Dernier message: 23/09/2005, 13h29
  4. [Struts]Affiche d'une liste sur plusieurs pages
    Par guillaume_85 dans le forum Struts 1
    Réponses: 3
    Dernier message: 24/06/2005, 20h23
  5. [MFC] Classer une liste a plusieur colonne
    Par Kevgeii dans le forum MFC
    Réponses: 8
    Dernier message: 07/03/2005, 15h09

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