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

fabricioliking 79 Messages postés mercredi 30 août 2006Date d'inscription 15 mai 2009 Dernière intervention - 7 mai 2009 à 11:07 - Dernière réponse : Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention
- 7 mai 2009 à 12:46
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.
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 7 mai 2009 à 12:23
3
Merci
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]; ....

Merci Bul3 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 85 internautes ce mois-ci

Commenter la réponse de Bul3
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 7 mai 2009 à 11:35
0
Merci
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.

@+
Commenter la réponse de Bul3
fabricioliking 79 Messages postés mercredi 30 août 2006Date d'inscription 15 mai 2009 Dernière intervention - 7 mai 2009 à 11:37
0
Merci
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.
Commenter la réponse de fabricioliking
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 7 mai 2009 à 11:44
0
Merci
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....
@+
Commenter la réponse de Bul3
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 7 mai 2009 à 11:46
0
Merci
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.
@+
Commenter la réponse de Bul3
fabricioliking 79 Messages postés mercredi 30 août 2006Date d'inscription 15 mai 2009 Dernière intervention - 7 mai 2009 à 11:56
0
Merci
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");
}
Commenter la réponse de fabricioliking
fabricioliking 79 Messages postés mercredi 30 août 2006Date d'inscription 15 mai 2009 Dernière intervention - 7 mai 2009 à 12:19
0
Merci
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
Commenter la réponse de fabricioliking
fabricioliking 79 Messages postés mercredi 30 août 2006Date d'inscription 15 mai 2009 Dernière intervention - 7 mai 2009 à 12:34
0
Merci
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
Commenter la réponse de fabricioliking
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 7 mai 2009 à 12:46
0
Merci
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 !
Commenter la réponse de Bul3

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.