Un formulaire n'est pas rempli par des infos transmis avec ajax

Résolu
tiwtiwa11 Messages postés 6 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 2 juillet 2009 - 17 juin 2009 à 13:50
tiwtiwa11 Messages postés 6 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 2 juillet 2009 - 17 juin 2009 à 21:41
Bonjour tout le monde,j'ai un problème que j'ai pas pu résoudre ça fait une semaine,je m'explique:
j'ai une liste déroulante dans laquelle je choisis un nom d'agence(pris d'une table agence qui contient tous les infos des agences stockés dans la base de donnée)
dés que je choisis le nom ,le code d'ajax va remplir le rest des zones de textes par les autres infos liés à l'agence:

voici les deux fonctions de java script qui vont m'aider:

<script type="text/javascript">
<!--

function request(oSelect) {
    var id = oSelect.options[oSelect.selectedIndex].value;
    var xhr   = getXMLHttpRequest();
   
   
    xhr.onreadystatechange = function() {        if (xhr.readyState 4 && (xhr.status 200 || xhr.status == 0)) or die(xhr.readyState){
          alert("ok");
          alert(xhr.responseXML);
            readData(xhr.responseXML);
            document.getElementById("loader").style.display = "none";

        }
     else {
         alert("requette ajax not very nice");
         die(xhr.readyState);
      }
    };
   
    xhr.open("POST", "info.php", true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("id="+id);

}

function readData(oData) {
    var nodes1   = oData.getElementsByTagName("adresse").value;
    var nodes2   = oData.getElementsByTagName("responsable").value;
   
    var oSelect1 = document.getElementById("adresse1");
    var oSelect2 = document.getElementById("responsable1");
   
    var oOption1, oInner1,oOption2, oInner2;
   
    oSelect1.innerHTML = "";
    oSelect2.innerHTML = "";
    for (var i=0, c=nodes.length; i<c; i++) {
        oOption1 = document.createElement("input");
        oInner1  = document.createTextNode(nodes1[i].getAttribute("name"));
        oOption1.value = nodes1[i].getAttribute("id");
        oOption1.appendChild(oInner1);
        oSelect1.appendChild(oOption1);
       
    oOption2 = document.createElement("input");
        oInner2  = document.createTextNode(nodes2[i].getAttribute("name"));
        oOption2.value = nodes2[i].getAttribute("id");
       
        oOption1 = document.createElement("input");  //je dois inclure les informations récupérés  dans "input"
de type text
        oOption2 = document.createElement("input");
        oSelect1.appendChild(nodes1);
       
        oSelect2.appendChild(nodes2);   
       
    }
}
//-->
</script>

on va inclure un fichier qui va me créer le xhr
<script type="text/javascript" src="fichxhr.js"></script>

puis le formulaire :

<legend>Agences</legend>
   

       
            <select id="agenceSelect">
    <option value="none">Selection</option>
                <?php $maconnexion =mysql_connect("localhost","root","");
          $con_base = mysql_select_db("gestion_riad",$maconnexion);
          $sql="select id_agence, def_agence  from agencevoyage";
          $ressit =mysql_query( $sql, $maconnexion );
          while($donnee = mysql_fetch_assoc($ressit))
              {
             
         echo "<option id="".$donnee["id_agence"] ."\>" . $donnee["def_agence"] ."</option>"; }
               ?>
                           
            </select>
           
       
       
           
       

       
           
       

       
   

3 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
17 juin 2009 à 14:07
Bonjour,

bon courage à ceux qui tenteront de t'aider.
pour moi, tu devrais, déjà,  mieux cerner ton problème :
    javascript/client ou php/serveur...
là, c'est du genre : tiens v'la tout, ou presque !!!!
    car même pas "testable" tel quel !, et démerdez vous
je parle de moi : je n'ai pas la science infuse et suis assez limité,
    sans tester en général, je ne vois/devine rien :
    comment faire, par exemple, sans ta base de données ?
    en plus, faut remettre tes extraits en forme ?

Cordialement [mon Site] [M'écrire] Bul
3
tiwtiwa11 Messages postés 6 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 2 juillet 2009
17 juin 2009 à 13:56
"fichxhr.js":

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;
}

ET pour le fichier info.php ou se fait le traitement :

<?php

header("Content-Type: text/xml");
echo "<?xml version="1.0" encoding="utf-8"?>";
echo "<list>";

$id= (isset($_POST["Id"])) ? htmlentities($_POST["Id"]) : NULL;

if ($id) {
    $maconnexion =mysql_connect("localhost","root","");
    $con_base = mysql_select_db("gestion_riad",$maconnexion);
   
    $query = mysql_query("SELECT adress_agence,reponsable_agence from agencevoyage  WHERE id_agence=" . $id );
    while ($donne = mysql_fetch_array($query)) {
    $ContenuXml .= "<?xml version='1.0' encoding='UTF-8'?>";

$ContenuXml .="";
$ContenuXml .="";
$ContenuXml .= $donnee['adress_agence'];
$ContenuXml .="";
$ContenuXml .="<responsable>";
$ContenuXml .= $donnee['reponsable_agence'];
$ContenuXml .="</responsable>";
$ContenuXml .="";

$xml = simplexml_load_string($ContenuXml);
        echo $xml;
    }
}

?>

Je serais  infiniment reconnaissante si arrivez à trouver la solution
et MERCI pour votre inérêt
0
tiwtiwa11 Messages postés 6 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 2 juillet 2009
17 juin 2009 à 21:41
Merci pour ta réponse bul3
peut être la longueur du code perturbe sa compréhension
la partie qui concerne  ce code de la base de donnée "gestion_riad"
est la table agencevoyage
la requette qui va permettre de créer la table :

create table if not exists agencevoyage(
 id_agence  integer auto_increment primary key,
 def_agence varchar(30),
 adress_agence varchar(50),
responsable_agence varchar(30)
 );

le code que j'ai envoyé auparavant permet de choisir à partir d'une liste déroulante (dans laquelle s'affichent les noms d'agences que j'ai entré)
;  alors le choix de  "def_agence"  permet de remplir des zones de textes
par l'adresse et le responsable qui le convient de la table agencevoyage

j'espère que j'ai bien expliqué
cordialement
0
Rejoignez-nous