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] Liste liées Ajax


Sujet :

AJAX

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 432
    Par défaut [AJAX] Liste liées Ajax
    Bonjour,
    je travail actuellement avec wamp, notepad++ en local.
    Je desir réaliser deux liste liées prenant leurs informations dans la BDD sql.

    J'ai réaliser une premiere liste en php avec une requete, puis un script JavaScript, qui permet d'envoyer a une autre page php la variable selectionner afin de faire la requette, la traiter, et renvoyer le resultat.
    Ensuite JS se charge de générer grace a un autre script la seconde liste.

    De l'ajax pour faire simple.
    Je rencontre donc un probleme comme vous pouvez vous en douter,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    oData is null
    var nodes = oData.getElementsByTagName("item");
    Erreur fournit par Firebug de mozilla.

    Je ne comprend pas pourquoi, ma requette est bonne, quand je rentre une valeur a la mains la requette me repond.

    J'ai donc acceuil.php avec les listes et Ajax.php avec les script de traitement.


    acceuil.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
    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
    <?php
    session_start();
     
    if(!empty($_SESSION['login']) AND !empty($_SESSION['psw']))
    {
            include 'connect_bdd\connection_BDD.php';
            $login = ($_SESSION['login']);
            $code = ($_SESSION['psw']);
            
            //on test si la personne est un administrateur ou un client et si ils sont bien dans la base de donnée
            $raq = "select ID_ADM from administrateur where LOGIN =\"$login\" and PASSWORD =\"$code\" ";
            $rap = mysql_query($raq);
            $bv = mysql_num_rows($rap);
            
            if($bv != 0)
            {
    ?>
     
    	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    	<html xmlns="http://www.w3.org/1999/xhtml">
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    		<title>Connection</title>
     
    		<script type="text/javascript" src="oXHR.js"></script>
     
    		<script type="text/javascript">
    		<!-- 
    			function request(oSelect) {
    			var value = oSelect.options[oSelect.selectedIndex].value;
    			var xhr   = getXMLHttpRequest();
     
    			xhr.onreadystatechange = function() {
    				if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
    					readData(xhr.responseXML);	
    				} 
    			};
     
    			xhr.open("POST", "Ajax.php", true);
    			xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    			xhr.send("Departement=" + value);
    			}
     
    			function readData(oData) {
    				var nodes   = oData.getElementsByTagName("item");
    				var oSelect = document.getElementById("Ville");
    				var oOption, oInner;
     
    				oSelect.innerHTML = "";
    				for (var i=0, c=nodes.length; i<c; i++) {
    					oOption = document.createElement("option");
    					oInner  = document.createTextNode(nodes[i].getAttribute("name"));
    					oOption.value = nodes[i].getAttribute("id");
     
    					oOption.appendChild(oInner);
    					oSelect.appendChild(oOption);
    				}
    			}
    		</script>
    	</head>
     
    	<body>
     
     
    		<DIV ID=mv2></DIV>
    		<script LANGUAGE="JavaScript" SRC="ejs_menu_dyn_vert2.js"></script>
     
     
    		<h1>test</h1>
     
     
    			<form method="post" action="">
    				<table width="400" border="0" align="center" cellpadding="1" cellspacing="1">
    					<tr>
    						<td width="157">Département :</td>
    						<td width="236"><select name="Departement" id="Departement" onchange="request(this)";>
    										<?php
                                                                                    $roq = "select * from departement";
                                                                                    $rop = mysql_query($roq);
                                                                                    while ($ros = mysql_fetch_assoc($rop) )
                                                                                    {                                                                                       
                                                                                            echo "<option value='".$ros['ID_DEP']."'>".$ros['ID_DEP']." ".$ros['NOM_DEP']."</option>";
                                                                                    }
                                                                                    ?>
    									</select></td>
    				  </tr>
     
    				  <tr>
    					<td width="236">Ville :</td>
    					<td width="236"> <select name="Ville" id="Ville"></select> </td>
    				  </tr>
     
    				  <tr>
    					<td>&nbsp;</td>
    					<td><input name="valider" type="submit" id="valider" value="Valider" /></td>
    				  </tr>
    				</table>
    			</form>
     
    		<?php
                       include_once("..\pied.php");
                    ?>
    	</body>
    	</html>
     
    <?php
            }
    }
    ?>


    et voici Ajax.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
    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
    session_start();
     
            if(!empty($_SESSION['login']) AND !empty($_SESSION['psw']))
            {
                    include 'connect_bdd\connection_BDD.php';
                    $login = ($_SESSION['login']);
                    $code = ($_SESSION['psw']);
                    
                    //on test si la personne est un administrateur ou un client et si ils sont bien dans la base de donnée
                    $raq = "select ID_ADM from administrateur where LOGIN =\"$login\" and PASSWORD =\"$code\" ";
                    $rap = mysql_query($raq);
                    $bv = mysql_num_rows($rap);
                    
                                    
                    if($bv != 0)
                    {
                            
                            if(isset($_POST['Departement']) )//si le departement choisit on va ramonter les villes de ce departement
                            {
                                    $departement = htmlspecialchars($_POST['Departement']);
                                    $req = " SELECT * FROM ville WHERE ID_DEP= '$departement' ";
                                    $rep = mysql_query($req);
                                    
                                    $contenu_xml = '<?xml version="1.0" encoding="UTF-8"?><automate></automate>';
                                    
                                    $contenu_xml = $contenu_xml + '<racine>';
                                    
                                    
                                    
                                    while($res = mysql_fetch_assoc($rep) )
                                    {
                                            echo $res['NOM_VIL'];
                                            
                                            $contenu_xml = $contenu_xml + "<item id=\" "$res['ID_VIL']" \" name=\" "$res['NOM_VIL']" \" />";
                                    }
                                    
                                    $contenu_xml = $contenu_xml + '</racine>';
     
                            }
                    }
            }
    ?>

    Je suppose que je dois avoir une erreur de syntaxe xml ou de concaténation du contenu, mais je ne trouve pas la bonne solution.

    Je vous remercie par avance de bien vouloir m'éclairer ou même aiguiller sur la bonne direction.

    Je reste a votre disposition pour de plus amples renseignements.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonsoir,
    Tu dois ajouter un header pour dire au navigateur que c'est un xml.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-Type: text/xml');

    A+.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 432
    Par défaut
    Bonjour,
    merci pour cette réponse effectivement il manquait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Content-Type: text/xml");
    que j'ai rajouter j'ai donc

    Ajax.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
    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
     
    <?php
    session_start();
     
            if(!empty($_SESSION['login']) AND !empty($_SESSION['psw']))
            {
                    include 'connect_bdd\connection_BDD.php';
                    $login = ($_SESSION['login']);
                    $code = ($_SESSION['psw']);
                    
                    //on test si la personne est un administrateur ou un client et si ils sont bien dans la base de donnée
                    $raq = "select ID_ADM from administrateur where LOGIN =\"$login\" and PASSWORD =\"$code\" ";
                    $rap = mysql_query($raq);
                    $bv = mysql_num_rows($rap);
                    
                                    
                    if($bv != 0)
                    {
                            
                            if(isset($_POST['Departement']) )//si le departement choisit on va ramonter les villes de ce departement
                            {
                                    $departement = htmlspecialchars($_POST['Departement']);
                                    $req = " SELECT * FROM ville WHERE ID_DEP= '$departement' ";
                                    $rep = mysql_query($req);
                                    
                                    header("Content-Type: text/xml");
                                    $contenu_xml = '<?xml version="1.0" encoding="UTF-8"?><automate></automate>';
                                    $contenu_xml = $contenu_xml + '<racine>';
                    
                                    while($res = mysql_fetch_assoc($rep) )
                                    {
                                            echo $res['NOM_VIL'];
                                            
                                            $contenu_xml = $contenu_xml + "<item id=\" "$res['ID_VIL']" \" name=\" "$res['NOM_VIL']" \" />";
                                    }
                                    
                                    $contenu_xml = $contenu_xml + '</racine>';
                                                                    
                            }
                    }
            }
    ?>
    Je tiens a préciser une fonction pour éviter toutes confusion,
    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
     
    function getXMLHttpRequest() {
    	var xhr = null;
     
    	if (window.XMLHttpRequest || window.ActiveXObject) {
    		if (window.ActiveXObject) {
    			try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch(e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		} else {
    			xhr = new XMLHttpRequest(); 
    		}
    	} else {
    		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    		return null;
    	}
     
    	return xhr;
    }
    qui est appeler dans accueil.php

    je raconte tout cela pour être plus précis car malheureusement j'ai toujours la même erreur.

    Merci d'avance pour vos lumières.

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Re,

    Un simple quote dans une requête SQL mais pas des doubles quotes.
    $raq = "select ID_ADM from administrateur where LOGIN =\"$login\" and PASSWORD =\"$code\" ";
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $raq = "select ID_ADM from administrateur where LOGIN ='".$login."' and PASSWORD ='".$code."' ";
    include 'connect_bdd\connection_BDD.php';
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    include 'connect_bdd/connection_BDD.php';

    Sinon à la place de readData(xhr.responseXML);
    Mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(xhr.responssText);
    Pour vérifier.

    A+.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 432
    Par défaut
    Bonjour,
    Merci pour votre réponse.

    Suite a vos remarque j'ai refait des tests afin d’être sur.

    Pour mon include, cela fonctionne aussi chez moi avec mon code, que se soit sur d'autre page du site qui utilise le même script de connections, que cette page. D’ailleurs il me semble que si mon chemin n'avait pas été bon, j'aurai eu une erreur du type, "problème connections sql ou bdd".

    quand a ce code je vais le tester de suite mais il me semble si j'ai bien compris que cela fonctionne si mon fichier est un txt, en l'occurence j'ai programmer un xml. Je ne suis pas sur que cela soit bon. Je vous tiens au courant.
    alert(xhr.responssText);
    Donc pour ma requête, je l'ai tester avec des simple des doubles, dans mon cas cela fonctionne sans problème.

    Je précise que quand je met le $_POST[''] en valeur fixe et que je met ma variable $contenu_xml qui contient le contenu structure incluse de mon fichier xml en commentaire j'ai une nouvelle forme d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Erreur d'analyse XML : mal formé
    Emplacement : http://localhost/decopalm/admin/Ajax.php
    Numéro de ligne 1, Colonne 61 :
    et si je met mon header en commentaire le contenu de ma requête s'affiche grace a .

    donc je suppose que le problème viens de ma variable $contenu_xml qui contient le contenu structure incluse de mon fichier xml.

    d'ailleurs en remplacent ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $contenu_xml = $contenu_xml + "<item id=\" "$res['ID_VIL']" \" name=\" "$res['NOM_VIL']" \" />";
    Par ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $contenu_xml = $contenu_xml + "<item id=\" ".$res['ID_VIL']." \" name=\" ".$res['NOM_VIL']." \" />";
    j'obtient
    ce message
    Erreur d'analyse XML : mal formé
    Emplacement : http://localhost/decopalm/admin/Ajax.php
    Numéro de ligne 1, Colonne 61 :
    merci d'avance pour vos lumières

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Re,

    $contenu_xml = '<?xml version="1.0" encoding="UTF-8"?><automate></automate>';
    1-Un XML doit avoir une et une seule racine principale, voilà un tag qui n'est pas dans la racine de ton xml ou tu as deux racines , vire le si tu ne l'utilises pas sinon met le dans racine.
    2-Si un tag est vide, tu dois ecrire seulement <automate/>

    A+.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 432
    Par défaut
    Mhh je dois avouer que je ne comprend pas bien se que vous essayer de me dire.

    comme je suis sur mozilla avec firebug, lors de la selection de ma premiere liste, il m'affiche

    <?xml version="1.0" encoding="UTF-8"?><automate></automate><racine><item id=" 414 " name=" Azy-sur-Marne " /><item id=" 415 " name=" Aubencheul-aux-Bois " /><item id=" 416 " name=" Attilly " /><item id=" 417 " name=" Athies-sous-Laon " /><item id=" 418 " name=" Assis-sur-Serre " />
    et si je met ceci en commentaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /*$contenu_xml = '<?xml version="1.0" encoding="UTF-8"?><automate></automate>';*/
    cela M'affiche :
    <br />
    <b>Notice</b>: Undefined variable: contenu_xml in <b>C:\wamp\www\decopalm\admin\Ajax.php</b> on line <b>28</b><br />
    <racine><item id=" 414 " name=" Azy-sur-Marne " /><item id=" 415 " name=" Aubencheul-aux-Bois " /><item id=" 416 " name=" Attilly " /><item id=" 417 " name=" Athies-sous-Laon " /><item id=" 418 " name=" Assis-sur-Serre " /><item id=" 419 " name=" Artonges " />

    Je tiens a préciser que j'ai tester avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    readData(xhr.responseXML);
    alert(xhr.reponseXML);
    et j'ai undefinided qui s'affiche dans tout les cas.

    Merci pour vos lumieres

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $contenu_xml = '<?xml version="1.0" encoding="UTF-8"?>';
    Edit : j'ai oublié le point virgule


  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 432
    Par défaut
    J'ai donc mit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $contenu_xml = '<?xml version="1.0" encoding="UTF-8"?>';
    mais mon alerte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    readData(xhr.responseXML);
    alert(xhr.reponseXML);
    me dis toujours undefinided

    pourtant firebug me dis
    <?xml version="1.0" encoding="UTF-8"?><racine><item id="414" name="Azy-sur-Marne" /><item id="415" name="Aubencheul-aux-Bois" /><item id="416" name="Attilly" /><item id="417" name="Athies-sous-Laon" /><item id="418" name="Assis-sur-Serre" /><item id="419" name="Artonges" />
    pour l'onglet réponse.


    Merci d'avance pour vos lumières.

  10. #10
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    le tag <racine> n'est pas fermé .

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 432
    Par défaut
    Normal il s'agit d'un extrait car il y a beaucoup de réponse,
    il s'agit de sortir toutes les villes d'un département et je ne voulais pas polluer plus le forum.
    Mais après vérification tout de même le tag <racine> est bien fermer.

    Merci d'avance pour vos lumières.

  12. #12
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Tu as une erreur dans ton alert
    alert(xhr.reponseXML);
    c'est response.
    Dans la fonction readData, un select ne supporte pas innerHTML sous IE, pour effacer ses options.length=0:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    oSelect.options.length=0;
    for (var i=0, i<nodes.length;i++) {
             var oOption = new Option(nodes[i].getAttribute("name"),nodes[i].getAttribute("id"));
             oSelect.options[i]=oOption;
    }
    A+.

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 432
    Par défaut
    Bonjour,
    Bien jour pour le petit "s" une erreur bete difficile a voir.

    j'ai appliquer les modification dont vous m'avez parler bien que je ne les comprennent pas vraiment, votre boucle dois t'elle remplacer intégralement la mienne ? si c'est le cas ou se fait l'ordre de création de la liste?

    Malgré ces modification une nouvelle erreur apparait ^^ encore
    je me permet de vous le copier ici
    oData is undefined
    [Break on this error] var nodes = oData.getElementsByTagName("item");
    Merci d'avance pour vos lumières.

  14. #14
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Re,

    Essaie de passer xhr.responseXML dans une variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var monXml=xhr.responseXML;
    readData(monXml);
    votre boucle dois t'elle remplacer intégralement la mienne ?
    Oui.
    si c'est le cas ou se fait l'ordre de création de la liste?
    Là je ne te comprend pas.

    A+.

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 432
    Par défaut
    Merci pour vos réponse rapide.
    Alors après avoir mit
    var monXml=xhr.responseXML;
    readData(monXml);
    La derniere erreur n'est plus deplus mon alert m'affiche un objet se qui en soit me parait normal. En revanche ma deuxieme liste déroulante ne se remplit pas, c'est pourtant le but.
    J'ai essayer avec votre code dans la boucle et le mon ancien.

    Je vais essayer d'etre plus clair sur se que je n'ai pas comprit dans cette boucle.
    Il me semblais si j'avais bien comprit que cette fonction
    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
     
    function readData(oData) {
    				var nodes   = oData.getElementsByTagName("item");
    				var oSelect = document.getElementById("Ville");
    				var oOption, oInner;
     
    				oSelect.innerHTML = "";
    				for (var i=0, c=nodes.length; i<c; i++) {
    					oOption = document.createElement("option");
    					oInner  = document.createTextNode(nodes[i].getAttribute("name"));
    					oOption.value = nodes[i].getAttribute("id");
     
    					oOption.appendChild(oInner);
    					oSelect.appendChild(oOption);
    				}
    			}
    avait pour rôle de recuperer le contenu Xml et de generer une partie de la second liste (balise manquante etc...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     <tr>
    					<td width="236">Ville :</td>
    					<td width="236"> <select name="Ville" id="Ville"></select> </td>
    				  </tr>
    Me trompe je?

  16. #16
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function readData(oData) {
    				var nodes   = oData.getElementsByTagName("item");
    				var oSelect = document.getElementById("Ville");
    				oSelect.options.length=0;
    for (var i=0, i<nodes.length;i++) {
             alert(nodes[i].getAttribute("name")+" <-> "+nodes[i].getAttribute("id"));//vérification 
             var oOption = new Option(nodes[i].getAttribute("name"),nodes[i].getAttribute("id"));
             oSelect.options[i]=oOption;
    }
     
    			}
    A+.

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 432
    Par défaut
    Merci pour ceci mais je ne rentre pas dans la boucle
    mon alerte de verification ne se déclenche pas alors qu'il affiche
    readData(monXml);
    Comme un objet

    Merci d'avance pour vos lumières et désoler pour les soucis que je cause.

  18. #18
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Montre ton code actuel.

    A+.

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 432
    Par défaut
    Bonjour,
    désoler pour le temps de réponse, un week end des imprévu, etc....

    donc je vais mettre tout mon code ici afin que l'on puisse refaire le point comme demander.

    oXHR.js
    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
     
    function getXMLHttpRequest() {
    	var xhr = null;
     
    	if (window.XMLHttpRequest || window.ActiveXObject) {
    		if (window.ActiveXObject) {
    			try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch(e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		} else {
    			xhr = new XMLHttpRequest(); 
    		}
    	} else {
    		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    		return null;
    	}
     
    	return xhr;
    }
    acceuil.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
    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
    <?php
    session_start();
     
    if(!empty($_SESSION['login']) AND !empty($_SESSION['psw']))
    {
            include 'connect_bdd\connection_BDD.php';
            $login = ($_SESSION['login']);
            $code = ($_SESSION['psw']);
            
            //on test si la personne est un administrateur ou un client et si ils sont bien dans la base de donnée
            $raq = "select ID_ADM from administrateur where LOGIN =\"$login\" and PASSWORD =\"$code\" ";
            $rap = mysql_query($raq);
            $bv = mysql_num_rows($rap);
            
            if($bv != 0)
            {
    ?>
     
    	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    	<html xmlns="http://www.w3.org/1999/xhtml">
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    		<title>Connection</title>
     
    		<script type="text/javascript" src="oXHR.js"></script>
     
    		<script type="text/javascript">
    		<!-- 
    			function request(oSelect) {
    			var value = oSelect.options[oSelect.selectedIndex].value;
    			var xhr   = getXMLHttpRequest();
     
    				xhr.onreadystatechange = function() {
    					if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
    						var monXml=xhr.responseXML;
    						readData(monXml);
     
    					} 
    				};
     
    			xhr.open("POST", "Ajax.php", true);
    			xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    			xhr.send("Departement=" + value);
    			}
     
    			function readData(oData) {
    				var nodes   = oData.getElementsByTagName("item");
    				var oSelect = document.getElementById("Ville");
    				oSelect.options.length=0;
    				for (var i=0; i<nodes.length;i++) {
    						 alert(nodes[i].getAttribute("name")+" <-> "+nodes[i].getAttribute("id"));//vérification 
    						 var oOption = new Option(nodes[i].getAttribute("name"),nodes[i].getAttribute("id"));
    						 oSelect.options[i]=oOption;
    				}
    			}
    		</script>
    	</head>
     
    	<body>
     
     
    		<DIV ID=mv2></DIV>
    		<script LANGUAGE="JavaScript" SRC="ejs_menu_dyn_vert2.js"></script>
     
    		<h1>test</h1>
     
     
    			<form method="post" action="">
    				<table width="400" border="0" align="center" cellpadding="1" cellspacing="1">
    					<tr>
    						<td width="157">Département :</td>
    						<td width="236"><select name="Departement" id="Departement" onchange="request(this)";>
    										<?php
                                                                                    $roq = "select * from departement";
                                                                                    $rop = mysql_query($roq);
                                                                                    while ($ros = mysql_fetch_assoc($rop) )
                                                                                    {                                                                                       
                                                                                            echo "<option value='".$ros['ID_DEP']."'>".$ros['ID_DEP']." ".$ros['NOM_DEP']."</option>";
                                                                                    }
                                                                                    ?>
    									</select></td>
    				  </tr>
     
    				  <tr>
    					<td width="236">Ville :</td>
    					<td width="236"> <select name="Ville" id="Ville"></select> </td>
    				  </tr>
     
    				  <tr>
    					<td>&nbsp;</td>
    					<td><input name="valider" type="submit" id="valider" value="Valider" /></td>
    				  </tr>
    				</table>
    			</form>
    		<?php
                       include_once("..\pied.php");
                    ?>
    	</body>
    	</html>
     
    <?php
            }
    }
    ?>
    Ajax.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
    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
     
    <?php
    session_start();
     
            if(!empty($_SESSION['login']) AND !empty($_SESSION['psw']))
            {
                    include 'connect_bdd\connection_BDD.php';
                    $login = ($_SESSION['login']);
                    $code = ($_SESSION['psw']);
                    
                    //on test si la personne est un administrateur ou un client et si ils sont bien dans la base de donnée
                    $raq = "select ID_ADM from administrateur where LOGIN =\"$login\" and PASSWORD =\"$code\" ";
                    $rap = mysql_query($raq);
                    $bv = mysql_num_rows($rap);
                    
                                    
                    if($bv != 0)
                    {
                            //$dep = 1;
                            if(isset($_POST['Departement'] ) )//si le departement choisit on va ramonter les villes de ce departement
                            {
                                    $departement = htmlspecialchars($_POST['Departement']);
                                    $req = " SELECT * FROM ville WHERE ID_DEP= '$departement' ";
                                    $rep = mysql_query($req);
                                    
                                    header("Content-Type: text/xml");
                                    
                                    $contenu_xml = '<?xml version="1.0" encoding="UTF-8"?>';
                                    $contenu_xml = $contenu_xml . '<racine>';
                    
                                    while($res = mysql_fetch_assoc($rep) )
                                    {
                                            
                                            
                                            $contenu_xml = $contenu_xml ."<item id=\"".$res['ID_VIL']."\" name=\"".$res['NOM_VIL']."\" />";
                                            
                                    }
                                    
                                    
                                    $contenu_xml = $contenu_xml . '</racine>';
                                    echo $contenu_xml;
            
                            }
     
     
                    }
            }
    ?>
    Je re précise que je désire faire des listes liée remplit par une BDD.

    Merci d'avance pour vos lumières.

  20. #20
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut
    Je passe juste pour demandé si tu as comparé ton procédé à un script opérationnel comme celui que j'ai en signature Exemple de Select Multi en AJAX.

    J'utilise JQUERY mais on reste dans le même domaine.

    J'ai pas jeter un oeil a ton code je mis mets de suite

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AJAX] listes liée ajax
    Par hassene_23 dans le forum AJAX
    Réponses: 1
    Dernier message: 17/11/2010, 04h24
  2. Réponses: 3
    Dernier message: 15/11/2010, 13h57
  3. Réponses: 19
    Dernier message: 08/06/2010, 09h22
  4. [AJAX] Liste liées Ajax
    Par Invité dans le forum AJAX
    Réponses: 52
    Dernier message: 06/04/2010, 11h14
  5. [AJAX] liste liée ajax: s'iou plait, cherchez l'erreur
    Par redwire dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/09/2006, 20h26

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