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] 2 listes liés


Sujet :

AJAX

  1. #1
    Membre éclairé Avatar de dv-2008
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 240
    Par défaut [AJAX] 2 listes liés
    Bonjour,
    je debute avec ajax ,et j'ai un petit probléme concernant les listes liés
    à vrai dire la premiere liste se rempli correctement depuis la base de donnée mais lorsque je choisi une option la 2 éme liste ne se remplis pas
    merci d'avance pour votre aide

    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
     
     
    <?php session_start();?>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    <head>
    <title>Manipulation des listes de choix</title>
    </head>
    <script type='text/javascript' src='oXHR.js'></script>
    <script type='text/javascript'>
     
    var xhr=null;
     
    function request(callback)
    {
    	xhr=getXHR();
    	if(xhr.readyState != 0)
    	{
    		xhr.abort();
    	}
     
    	xhr.onreadystatechange = function() 
    	{
    		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
    				callback(xhr.responseXML); 
    				document.getElementById("loader").style.display = "none";
    		} else if (xhr.readyState < 4) {
    				document.getElementById("loader").style.display = "inline";
    		}
    	};
     
    	var value = encodeURIComponent(document.getElementById('editorsSelect').options[document.getElementById('editorsSelect').selectedIndex].value);
    	xhr.open("POST", "reqListe.php", true);
    	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    	xhr.send("IdEditor=" + value);
     
    }
     
    function test(sData)
    {
    	var p = sData.getElementsByTagName("soft");
    	alert(p.length);
    	for(var i=0;i<p.length;i++)
    	{	
    		var option = document.createElement("option");
    		var text = document.createTextNode(p[i].getAttribute('name'));
    		option.setAttribute('value',p[i].getAttribute('id'));
    		option.appendChild(text);
    		document.getElementById('softwaresSelect').appendChild(option);
    	} 
    }	
     
    </script>
     
    <body>
    <div id="programBox">
    	<p id="editors">
    		<select id="editorsSelect" onchange="request(test);">
    			<option value="none">Selection</option>
    			<?php
    				$bdd= new PDO('mysql:host=localhost;dbname=test','root','');
    				$reponse=$bdd->query('SELECT * FROM ajax_example_editors ORDER BY name') or die(print_r($bdd->errorInfo()));
    				while($rep=$reponse->fetch()) {
    					echo "\t\t\t\t<option value=\"" . $rep["id"] . "\">" . $rep["name"] . "</option>\n";
    				}
    				$reponse->closeCursor();
     
    			?>			
    		</select>
    		<span id="loader" style="display: none;"><img src="loading.gif" alt="loading" /></span>
    	</p>
    	<p id="softwares">
    		<select id="softwaresSelect"></select>
    	</p>
    </div>
    </body>
    </html>
    la page php responsable de l'envoi les données

    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
     
    <html>
    <body>
     
    	<?php
    		header("Content-Type: text/xml");
    		if(isset($_POST['IdEditor'])){
    			$bdd= new PDO('mysql:host=localhost;dbname=test','root','');
    			$reponse=$bdd->prepare('SELECT * FROM ajax_example_softwares where idEditor=? ORDER BY name') or die(print_r($bdd->errorInfo()));
    			$reponse->execute(array($_POST['IdEditor']));
     
    			echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
    			echo "<root>";
    			while($rep=$reponse->fetch())
    			{
    				echo "<soft id=\"" .$rep["id"]."\" name=\"" .$rep["name"]."\"/>";
    			} 
    			$reponse->closeCursor();
    			echo "</root>";
    		}
    ?>	
    </body>
    </html>

  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,
    pourquoi ne pas utiliser les instructions spécifiques aux listes (new Option() ) comme illustré dans cet exemple de la FAQ ?

    Sinon, aucune "3° liste" n'apparait dans ton code

    Et même si c'était le cas, il faudrait peut être ajouter un évènement onchange sur la 2° liste, si celle-ci doit déclencher un traitement quelconque

    A+

  3. #3
    Membre éclairé Avatar de dv-2008
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 240
    Par défaut
    je crois que je ne me suis pas bien expliqué, dans mon exemple il n'y a pas de 3éme liste je n'ai que 2 listes select, l'évènement onchange est defini au niveau de la 2éme liste

    lorsque j'essai de récupérer les donnée depuis un fichier .xml tout marche très bien, mais lorsque j'essai à partir d'un fichier php le readyState s'arrête à 3

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

Discussions similaires

  1. [AJAX] 3 listes chainé
    Par jj del amorozo dans le forum AJAX
    Réponses: 10
    Dernier message: 24/02/2012, 09h28
  2. [AJAX] Champ text et liste liés en AJAX
    Par bergie dans le forum AJAX
    Réponses: 6
    Dernier message: 09/07/2009, 16h41
  3. [AJAX] listes liés qui ne marchent pas sous Mozilla
    Par guigui5931 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 23/02/2009, 15h54
  4. [AJAX] plusieurs listes liées
    Par highman dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/03/2007, 10h31
  5. [AJAX] Plusieurs listes déroulantes
    Par max-mag dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/01/2007, 14h40

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