Partage
  • Partager sur Facebook
  • Partager sur Twitter

Liste déroulante et MAJ

Sujet résolu
    30 août 2010 à 15:50:15

    Bonjour,

    Alors voilà j'ai une page avec une liste déroulante et 3 champs de textes en dessous.
    J'aimerai lorsque je choisi un élément dans la liste, cela mette à jour les 3 champs de textes en dessous.

    Une requête sql est effectué est recherche les données pour créer la liste déroulante.

    Après quand on choisi un élément de la liste déroulante, cela effectue une requête sql qui va chercher les informations à mettre dans les 3 champs de texte en dessous.

    Merci d'avance pour l'aide.
    • Partager sur Facebook
    • Partager sur Twitter
      30 août 2010 à 16:00:30

      Lis cette page et tu trouveras ton bonheur : -- AJAX --
      (Tu trouveras tout en bas de la page un exemple qui se rapproche de ce que tu veux faire)
      • Partager sur Facebook
      • Partager sur Twitter
        14 septembre 2010 à 11:01:51

        Bonjour,

        J'ai bien regardé le lien mais je ne comprends pas tout.

        Donc j'ai compris que lorsque que je clique sur ma liste déroulante et que je choisis un élément, une fonction javascript est appelé (request) qui elle même appelle un fichier php qui accède à la base de données et renvoi les données.

        Ensuite une fonction javascript récupère ces données (readData) et les affiches.

        Pour l'instant il n'y a rien qui marche mais je pense que jusqu'à l'accès à la base de données c'est bon.
        Dans l'exemple du tutoriel les données sont récupérées et affichées dans une liste déroulante or je voudrais les affichés dans des zones de texte.

        Merci par avance
        • Partager sur Facebook
        • Partager sur Twitter
          14 septembre 2010 à 12:46:48

          Quelles sont tes connaissances en JS ?

          Tu pourrais utiliser le format JSON pour structurer tes données. Côté PHP, tu utilises json_encode pour encoder tes données en JSON.

          Et côté JS, tu utilises JSON.parse() pour désencoder tes données.
          Tu récupèreras un objet JS qu'il te suffira de traiter comme bon te semble.
          (Pour utiliser JSON, pense à inclure ce fichier js dans ta page http://www.json.org/json2.js )


          Si tu rencontres encore des problèmes, il faudrait que tu nous montres ton code.
          • Partager sur Facebook
          • Partager sur Twitter
            14 septembre 2010 à 13:31:20

            Bonjour,

            J'ai très peu de connaissances en Javascript.
            Pour renvoyer mes données dans mon fichier php, j'utilise ce code.

            <?php
            
            
            include('../../includes/var.inc.php');
            include('../../includes/con_bdd.inc.php');
             
            header("Content-Type: text/xml");
            echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
            echo "<list>";
            
            $idEditeur = (isset($_POST["NomEditeur"])) ? htmlentities($_POST["NomEditeur"]) : NULL;
            
            if ($idEditeur) {
            	
            	$editeur = mysql_query("SELECT * FROM editeur WHERE nomEditeur=\"" . mysql_real_escape_string($idEditeur)."\"");
            	$info_editeur = mysql_fetch_object($editeur);
            	
            	echo "<item id=\"nom\" name=\"".$info_editeur->nomEditeur."\" />";
            	echo "<item id=\"nationalite\" name=\"".$info_editeur->nationalite."\" />";
            	echo "<item id=\"description\" name=\"".$info_editeur->description."\" />";
            }
            
            echo "</list>";
            
            ?>
            


            Or quand j'essaye de récupérer les données avec javascript je n'ai rien.
            $_POST["NomEditeur"] est correct, j'ai testé. La requête est testé aussi.

            Merci par avance


            • Partager sur Facebook
            • Partager sur Twitter
              15 septembre 2010 à 1:27:55

              2 choses :
              1) si tu lance la page de traitement php avec un idEditeur correct, t'as bien le bon rendu xml (avec tout les items et compagnie) ?
              2) si t'as page de traitement n'a pas un problème c'est plus un problème lors de la mise en forme des données xml (donc dans la partie Ajax de ton autre page). Et il faudrait donc la diffuse pour qu'on puisse t'aider :-° .
              • Partager sur Facebook
              • Partager sur Twitter
                15 septembre 2010 à 10:51:29

                Apparemment ça bloquerait dans la page que j'ai mis au dessus car le fichier javascript n'arrive pas à readdata

                function updateEditeur(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);
                            document.getElementById("loader").style.display = "none";
                        } else if (xhr.readyState < 4) {
                            document.getElementById("loader").style.display = "inline";
                        }
                    };
                    xhr.open("POST", "../administration/includes/editeur.inc.php", true);
                    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                    xhr.send("NomEditeur=" + value);
                }
                
                function readData(oData) {
                    var nodes = oData.getElementsByTagName("item");
                    alert(nodes[0].getAttribute("name"));
                    for (var i=0, c=nodes.length; i<c; i++) {
                        if(nodes[i].getAttribute("id")="nom") {
                            document.getElementById("nomEditeur")  = document.createTextNode(nodes[i].getAttribute("name"));
                        }
                        if(nodes[i].getAttribute("id")="nationalite") {
                            document.getElementById("nationalite")  = document.createTextNode(nodes[i].getAttribute("name"));
                        }
                        if(nodes[i].getAttribute("id")="description") {
                            document.getElementById("descriptionEditeur")  = document.createTextNode(nodes[i].getAttribute("name"));    
                        }
                        
                
                    }
                }
                


                Et voici le formulaire de ma page html

                <form method="post" name="frm_modif_editeur">
                	<label>Nom : </label><input type="text" id="nomEditeur"/><br/>
                	<label>Nationalite : </label><input type="text" id="nationalite"/><br/>
                	<label>Description : </label><input type="textarea" id="descriptionEditeur"/><br/>
                	<input type="button" name="modifEditeur" value="Modifier" onclick="self.location.href='modif_editeur.php'"> 
                	<input type="button" name="modifEditeur" value="Supprimer" onclick="self.location.href='sup_editeur.php'"> 
                </form>
                


                EDIT : Si quelqu'un veut bien m'aider sur un chat en direct peut être ça serait plus facile
                • Partager sur Facebook
                • Partager sur Twitter
                  15 septembre 2010 à 14:51:29

                  Déjà de mise dans le readData tu as une grosse erreur :
                  dans toute tes conditions tu as oublié un = (la tu affecte, tu fais pas une comparaison).
                  Et pour ton test d'alert, test plutôt un bon vieux alert("bouh"); pour voir s'il atteint readData.

                  Sinon :
                  T'as essayé de tester la page de traitement directement ? voir comment donnait le xml.

                  De même tu obtiens quelle erreur sur la console d'erreurs (sous firefox, je ne connais pas l'équivalent sur les autres navigateurs).

                  Pour un chat si t'as un endroit précis, sinon par Mp.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 septembre 2010 à 15:00:00

                    C'est bon finalement un amis m'a résolu le problème


                    <?php
                    
                    include('../../includes/var.inc.php');
                    include('../../includes/con_bdd.inc.php');
                     
                    header("Content-Type: text/xml");
                    echo '<?xml version="1.0" encoding="iso-8859-1"?>';
                    echo '<list>';
                    
                    $idEditeur = (isset($_POST["NomEditeur"])) ? addslashes(htmlentities($_POST["NomEditeur"])) : NULL;
                    
                    if ($idEditeur) {
                    	$editeur = mysql_query('SELECT * FROM editeur WHERE nomEditeur="'.$idEditeur.'"');
                    	$info_editeur = mysql_fetch_object($editeur);
                    	echo '<item id="nom" name="'.$info_editeur->nomEditeur.'" />';
                    	echo '<item id="nationalite" name="'.$info_editeur->nationalite.'" />';
                    	echo '<item id="description" name="'.$info_editeur->description.'" />';
                    }
                    
                    echo "</list>";
                    
                    ?>
                    

                    function updateEditeur(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", "../administration/includes/editeur.inc.php", true);
                    	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                    	xhr.send("NomEditeur=" + value);
                    }
                    
                    function readData(oData) {
                    	var nodes = oData.getElementsByTagName("item");
                    	var c = nodes.length;
                    	var i;
                    	for (i=0 ; i<c ; i++) {
                    		if(nodes[i].getAttribute("id")=="nom") {
                    			document.getElementById("nomEditeur").value  = document.createTextNode(nodes[i].getAttribute("name")).data;
                    		}
                    		if(nodes[i].getAttribute("id")=="nationalite") {
                    			document.getElementById("nationalite").value  = document.createTextNode(nodes[i].getAttribute("name")).data;
                    		}
                    		if(nodes[i].getAttribute("id")=="description") {
                    			document.getElementById("descriptionEditeur").value  = document.createTextNode(nodes[i].getAttribute("name")).data;	
                    		}
                    	}
                    }
                    
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Liste déroulante et MAJ

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown