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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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+.

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

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