Remplir mon fichier xml pour ensuite l'afficher dans mon formulaire [Résolu]

Signaler
Messages postés
79
Date d'inscription
mercredi 30 août 2006
Statut
Membre
Dernière intervention
15 mai 2009
-
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
-
Re bonjour,

me revoila encore pour mes petites contines en ajax.


Voila j'arrive via mon code à afficher par le bied d'un alert le contenue d'un fichier xml.

Cependant, j'aimerai rajouter à l'évennement clique la création d'un
fichier xml ( qui ira chercher des informations dans la base de données
)


En finalité cela aura pour but de remplir automatiquement un formulaire avec la saisie simple d'un numéro client par exemple.


Voici le code javascript modifié :

Code :
 
function ajax()
{
var xhr=null;

if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}
elseif(window.ActiveXObject)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
//on définit l'appel de la fonction au retour serveur
xhr.onreadystatechange = function(){ alert_ajax(xhr); };
ch = document.formulaire.test.value;
alert(ch);
http.open("GET", "xml.php?test=" + escape(ch), true);
//on appelle le fichier reponse.txt
xhr.open("GET", "reponse.xml", true);
xhr.send(null);
}


pour résumer voila les deux lignes importantes :

http.open("GET", "xml.php?test=" + escape(ch), true);

//on appelle le fichier reponse.txt

xhr.open("GET", "reponse.xml", true);

j'aimerai créer mon fichier reponse.xml grâce au premier open et le lire via la suite de mon traitement par la suite.

J'ai due louper un épisode quelque part.


Merci d'avance d'éclairer ma lanterne.

9 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
j'avais bien compris !!!! mais pourquoi faire ?????
tu te compliques bien la vie....
retourne les données ou lit un fichier xml.
mais bon...
http.open,http.responseXml... c'est quoi http ?
xhr déjà. mais très loin d'être sûr que ça fonctionnera
tel quel avec tous les navigateurs
( sans préjuger du reste du script ! car déjà :
document.formulaire.zsnom = http.responseXml.getElementsByTagname("donne");
mal placé, doit être dans la fonction onreadystatechange
le tagname donne n'eiste pas dans le xml renvoyé .... )

en php : echo $champ1.';'.$champ2....
coté javascript :
var recu=xhr.responseText.split(";");
document.formulaire.zsnom = recu[0]; ....
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
bonjour,

>>Cependant, j'aimerai rajouter à l'évennement clique la création
>>d'un fichier xml
je ne comprends pas ce que tu veux faire...
tu veux créer en javascript un fichier xml ?
primo, ce sera donc sur le micro client, pas sur le serveur.
deuxio, xml.save() est possuible avce IE ( dans un .hta, pas un .htm )
et avec FF on peut y parvenir en gérant comme si c'était un fichier
texte "normal"
opera, chrome, safari.... je crains que ce ne soit pas
possible aujourd'hui (??)
si c'est sur le serveur ==> langage serveur !

>>( qui ira chercher des informations dans la base de données )
je comprend encore moins ????
pourquoi créer du xml à partit d'une base de données ?
soit tu n'as pas de base de données et tu utilises xml
pour faire
soit tu as une base de données, et tu en exploites les données.

@+
Messages postés
79
Date d'inscription
mercredi 30 août 2006
Statut
Membre
Dernière intervention
15 mai 2009

oui en faite, je veux par exemple si je tape fabrice dans une zone de saisie, récupérer dans la base le nom, tel, adresse etc pour le mettre dans mon fichier xml, afin d'afficher le tout dans mon formulaire.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
je répète ?
et pourquoi passer par un xml ?
met les directement depuis ta base de données ? non ?
tu appelles le langage sur le serveur pour gérer cette base,
    il te renvoie une page avec le formulaire rempli, et point barre....
@+
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
ou si tu appelles le serveur avec ajax, il te renvoie
champ1;champ2;champ3.... que tu met dans les champs
de ton formulaire après un ch'tiot split.
@+
Messages postés
79
Date d'inscription
mercredi 30 août 2006
Statut
Membre
Dernière intervention
15 mai 2009

en faite je peux créer une chiane dans ma page .php formaté comme du xml exemple

<?php
header("content-type:text/xml"); // tres important pour dire que la réponse qui va suivre doit être traitée comme du xml
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<racine>';
echo '<fils></fils>';
echo '</racine>';
?>

je me pose des questions concernant la récupération de ces données cela devra ressembler à quelque chose comme sa ?

function Tajax()
{
var xhr=null;

if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}
elseif(window.ActiveXObject)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
//on définit l'appel de la fonction au retour serveur
xhr.onreadystatechange = function(){ alert_ajax(xhr); };
ch = document.formulaire.test.value;
alert(ch);
http.open("GET", "xml.php?test=" + escape(ch), true);
xhr.send(null);
document.formulaire.zsnom = http.responseXml.getElementsByTagname("donne");
}
Messages postés
79
Date d'inscription
mercredi 30 août 2006
Statut
Membre
Dernière intervention
15 mai 2009

voila j'ai repris le tout et j'ai essayé donc à ma sauce voici ce que sa donne :


Page index.html

Code :
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
 
<head>
<title>exemple 500000</title>
</head>

 
<script type="text/javascript">
function Tajax()
{
var xhr=null;

if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}
elseif(window.ActiveXObject)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
//on définit l'appel de la fonction au retour serveur
ch = document.formulaire.id.value;
alert(ch);
http.open("GET", "xml.php?id=" + escape(ch), true);
cho = document.formulaire.pnom.value;
alert(cho);
xhr.send(null);
alert(http.responseXml.getElementsByTagname("donne"));
document.formulaire.nom.innerHTML = http.responseXml.getElementsByTagname("donne");
}
</script>
 

"javascript:Tajax();">Valider

 
<form action="index.html"name="formulaire">
"text" id="id" valeur="id client"name="id" onkeyup="Tajax();">
"text" id="nom"name="nom">
"text" id="pnom"name="pnom">
 
</form>
 

</html>

page xml.php

Code :
<?php
 

include('config.php');

$abr = $_GET['abr']; $q 'SELECT name from clients WHERE id '.$abr.'; '
$r = mysql_query($q);

if((mysql_num_rows($r)>0))
{
$name = '';
header("content-type:text/xml"); // tres important pour dire que la réponse qui va suivre doit être traitée comme du xml
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<exemple>';
while($rep=mysql_fetch_array($r)){
echo '<donne>';
echo $rep['name'],
echo '</donnne>';
}
echo '</exemple>';
}

 
?>
 

le second alert de ma page index.html ne s'ouvre pas, j'en déduit que je suis donc déjà bloqué avant
Messages postés
79
Date d'inscription
mercredi 30 août 2006
Statut
Membre
Dernière intervention
15 mai 2009

J'ai pris note de ce que tu as dit et voila le résultat :  ((ps il n'y a pas de balise pour le code ?))

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

<head>
    <title>exemple 500000</title>
</head>

<script type="text/javascript">
    function getXhr(){
                                var xhr = null;
                if(window.XMLHttpRequest) // Firefox et autres
                   xhr = new XMLHttpRequest();
                else if(window.ActiveXObject){ // Internet Explorer
                   try {
                            xhr = new ActiveXObject("Msxml2.XMLHTTP");
                        } catch (e) {
                            xhr = new ActiveXObject("Microsoft.XMLHTTP");
                        }
                }
                else { // XMLHttpRequest non supporté par le navigateur
                   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
                   xhr = false;
                }
                                return xhr;
            }

function go(){
                var xhr = getXhr();
                // On défini ce qu'on va faire quand on aura la réponse
                xhr.onreadystatechange = function(){
                    // On ne fait quelque chose que si on a tout reçu et que le serveur est ok                    if(xhr.readyState 4 && xhr.status 200)
                    {
                        // On se sert de innerHTML pour rajouter les options a la liste
                             ch = document.formulaire.id.value;
                             http.open("GET", "xml.php?id=" + escape(ch), true);    
                            xhr.send(null);
                            document.formulaire.nom.innerHTML = xhr.responseXml.getElementsByTagname("nom");
                            document.formulaire.pnom.innerHTML = xhr.reponseXml.getElementsByTagname("pnom");
                    }
                }
           
</script>

[javascript:go(); Valider]

<form action="index.html" name="formulaire">

</form>

</html>

--------------------------------page xml.php

<?php 
    include('config.php');
    $abr = $_GET['abr'];     $q 'SELECT name from clients WHERE id  '.$abr.'; '
    $r = mysql_query($q);
    if ((mysql_num_rows($r)>0))
    {   
         header("content-type:text/xml"); // tres important pour dire que la réponse qui va suivre doit être traitée comme du xml
         echo '<?xml version="1.0" encoding="UTF-8"?>';
          echo '<exemple>';
        while ($rep=mysql_fetch_array($r)){
         echo '<nom>';       
         echo $rep['nom'];
         echo '</nom>';
         echo '';
         echo $rep['pnom'];
         echo'

'; 
        }
          echo '</exemple>';
    }   

?>
toujours rien ne se passe
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
t'as pris bonne note mais t n'as pas lu...
document.formulaire.nom.innerHTML = xhr.responseXml.getElementsByTagname("nom");
document.formulaire.pnom.innerHTML = xhr.reponseXml.getElementsByTagname("pnom");
déjà. dit : mal placé, doit être dans la fonction onreadystatechange
et ce, sans préjuger du reste !
et si tu parviens à faire fonctionner, un conseil néanmoins :
vérifie avec tous ( ou presque ) les navigateurs !