par
Nounet » 06 avr. 2008, 11:00
Bonjour a tous,
J'utilise depuis peu les XmlHttpRequest pour mes applications web mais dans leur fonction simple.En effet,je ne genere pas du xml ce qui va exaspéré les puristes .c'est pourquoi dans un souci de bien faire ,je souhaiterais affiné mon code pour effectivement généré du xml.
Mon code doit afficher un formulaire avec des champ input ....
et c'est la le probleme ,je ne vois pourtant aucun message d'erreur pouvant m'aiguiller ,c'est pourquoi j'en fais appel à vos competences .
Voici le contenu de mon fichier Ajax.php
<?php
if (isset($_POST['IdCommande'])===TRUE){
echo '<?xml version="1.0"?>\n';
echo '<sInformationDossier>\n';
//on se connecte a la base de données access
$oConnection=new PDO(CONNECTION_TO_ACCESS);
if ($oConnection instanceof PDO){
//Attention IdCommande nous sera renvoyé par Ajax en methode post
$oPDOStatement=$oConnection->query('SELECT prenomProprietaire,idCommande,titreProprietaire,nomProprietaire,immeubleProprietaire,adresseProprietaire,codePostalProprietaire,villeProprietaire,adresseBien,CodePostalBien,immeubleBien,villeBien FROM commande WHERE idCommande='.$_POST['IdCommande']);
while($aRow=$oPDOStatement->fetch()){
echo '<sTitreProprietaire>'.trim($aRow['titreProprietaire']).'</sTitreProprietaire>\n';
echo '<sNomProprietaire>'.trim($aRow['nomProprietaire']).'</sNomProprietaire>\n';
echo '<sImmeubleProprietaire>'.trim($aRow['immeubleProprietaire']).'</sImmeubleProprietaire>\n';
echo '<sAdresseProprietaire>'.trim($aRow['adresseProprietaire']).'</sAdresseProprietaire>\n';
echo '<iCodePostalProprietaire>'.$aRow['codePostalProprietaire'].'</iCodePostalProprietaire>\n';
echo '<sVilleProprietaire>'.trim($aRow['villeProprietaire']).'</sVilleProprietaire>\n';
echo '<sPrenomProprietaire>'.trim($aRow['prenomProprietaire']).'</sPrenomProprietaire>\n';
echo '<iCodePostalBien>'.$aRow['CodePostalBien'].'</iCodePostalBien>\n';
echo '<sAdresseBien>'.$aRow['adresseBien'].'</sAdresseBien>\n';
echo '<sImmeubleBien>'.$aRow['immeubleBien'].'</sImmeubleBien>\n';
echo '<sVilleBien>'.$aRow['villeBien'].'</sVilleBien>\n';
}
}else{
throw new Exception('Connection sql impossible');
}
echo '</sInformationDossier>\n';
header('Content-Type: text/xml');
//on ferme la connexion avec la base de données
$oConnection=NULL;
}
?>
et voici maintenant mon fichier Ajax.js
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
}
// fonction de nettoyage de notre feuille xml
function Preclean(c){
if(!c.data.replace(/\s/g,''))
c.parentNode.removeChild(c);
}
function clean(d){
var bal=d.getElementsByTagName('*');
for(i=0;i<bal.length;i++){
a=bal[i].previousSibling;
if(a && a.nodeType==3)
Preclean(a);
b=bal[i].nextSibling;
if(b && b.nodeType==3)
Preclean(b);
}
return d;
}
/**
* Méthode qui sera appelée sur le click du bouton
*/
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){
reponse = clean(xhr.responseXML.documentElement);
AfficheFormulaire(reponse);
}
}
// Ici on va voir comment faire du post
xhr.open("POST","Ajax.php",true);
// ne pas oublier ça pour le post
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
// ici, l\'id de l\'auteur
HandleDuSelectBox= document.getElementById("IdCommande");
javaIdCommande = HandleDuSelectBox.options[HandleDuSelectBox.selectedIndex].value;
//on definit ce que doit envoyer notre script java il renverra $_POST [\'IdCommande\']
xhr.send("IdCommande="+javaIdCommande);
xhr.send(null);
}
/**Méthode d'affichage du formulaire**/
function AfficheFormulaire(xhr)
{
var docXML= xhr.responseXML;
//on recupere tous les elements de notre fichier xml
//par la suite on piourra optimiser ces lignes en utilisant un tableau
var sTitreProprietaire = docXML.getElementsByTagName("sTitreProprietaire");
var sNomProprietaire = docXML.getElementsByTagName("sNomProprietaire");
var sImmeubleProprietaire = docXML.getElementsByTagName("sImmeubleProprietaire");
var sAdresseProprietaire = docXML.getElementsByTagName("sAdresseProprietaire");
var iCodePostalProprietaire = docXML.getElementsByTagName("iCodePostalProprietaire");
var sVilleProprietaire = docXML.getElementsByTagName("sVilleProprietaire");
var sPrenomProprietaire = docXML.getElementsByTagName("sPrenomProprietaire");
var iCodePostalBien = docXML.getElementsByTagName("iCodePostalBien");
var sAdresseBien = docXML.getElementsByTagName("sAdresseBien");
var sImmeubleBien = docXML.getElementsByTagName("sImmeubleBien");
var sVilleBien = docXML.getElementsByTagName("sVilleBien");
//on crée une variable qui va nous crée le formulaire
var html= '';
html +='<input type="hidden" id="ImmeubleProprietaire" name="ImmeubleProprietaire" value="' +sImmeubleProprietaire+ '" />';
html +='<input type="hidden" id="AdresseProprietaire" name="AdresseProprietaire" value="' +sAdresseProprietaire+ '" />;
html +='<input type="hidden" id="CodePostalProprietaire" name="CodePostalProprietaire" value="' +iCodePostalProprietaire+ '"/>;
html +='<input type="hidden" id="VilleProprietaire" name="VilleProprietaire" value="'+ sVilleProprietaire +'"/>;
html +='<dl><dt><label for="TitreProprietaire" >Titre proprietaire :</label></dt><dd><input type="text" id="TitreProprietaire" name="TitreProprietaire" value="'+ sTitreProprietaire +'" /></dd></dl>';
html +='<dl><dt><label for="NomProprietaire" >Nom du propriétaire :</label></dt><dd><input type="text" id="NomProprietaire" name="NomProprietaire" value="'+ sNomProprietaire +'" /></dd></dl>';
html +='<dl><dt><label for="PrenomProprietaire" >Prènom du propriétaire :</label></dt><dd><input type="text" id="PrenomProprietaire" name="PrenomProprietaire" value="'+ sPrenomProprietaire +'" /></dd></dl>';
html +='<dl><dt><label for="ImmeubleBien" >Immeuble du bien:</label></dt><dd><input type="text" id="ImmeubleBien" name="ImmeubleBien" value="'+ sImmeubleBien +'" /></dd></dl>';
html +='<dl><dt><label for="AdresseBien" >Adresse du bien:</label></dt><dd><input type="text" id="AdresseBien" name="AdresseBien" value="'+ sAdresseBien +'" /></dd></dl>';
html +='<dl><dt><label for="CodePostal" >Code postal du bien :</label></dt><dd><input type="text" id="CodePostalBien" name="CodePostalBien" value="'+ iCodePostalBien +'" /></dd></dl>';
html +='<dl><dt><label for="VilleBienAnalysimmo" >Ville du bien dans Analysimmo</label></dt><dd><input type="text" id="VilleBienAnalysimmo" name="VilleBienAnalysimmo" value="'+ sVilleBien +'" /></dd></dl>';
//je precise a quel endroit dans notre page ernt.php je souhaite affiche mon formulaire,nous avons crée un div du nom de AfficheFormulaireAjax au sein de notre page php
document.getElementById('AfficheFormulaireAjax').innerHTML += html;
}
quelqu'un y voit il une erreur de ma part.en effet pour la creation du formulaire en java script ,j'ai fait appel a mon ami google.Merci d'avance pour vos lumieres!!
Bonjour a tous,
J'utilise depuis peu les XmlHttpRequest pour mes applications web mais dans leur fonction simple.En effet,je ne genere pas du xml ce qui va exaspéré les puristes .c'est pourquoi dans un souci de bien faire ,je souhaiterais affiné mon code pour effectivement généré du xml.
Mon code doit afficher un formulaire avec des champ input ....
et c'est la le probleme ,je ne vois pourtant aucun message d'erreur pouvant m'aiguiller ,c'est pourquoi j'en fais appel à vos competences .
Voici le contenu de mon fichier Ajax.php
[php]<?php
if (isset($_POST['IdCommande'])===TRUE){
echo '<?xml version="1.0"?>\n';
echo '<sInformationDossier>\n';
//on se connecte a la base de données access
$oConnection=new PDO(CONNECTION_TO_ACCESS);
if ($oConnection instanceof PDO){
//Attention IdCommande nous sera renvoyé par Ajax en methode post
$oPDOStatement=$oConnection->query('SELECT prenomProprietaire,idCommande,titreProprietaire,nomProprietaire,immeubleProprietaire,adresseProprietaire,codePostalProprietaire,villeProprietaire,adresseBien,CodePostalBien,immeubleBien,villeBien FROM commande WHERE idCommande='.$_POST['IdCommande']);
while($aRow=$oPDOStatement->fetch()){
echo '<sTitreProprietaire>'.trim($aRow['titreProprietaire']).'</sTitreProprietaire>\n';
echo '<sNomProprietaire>'.trim($aRow['nomProprietaire']).'</sNomProprietaire>\n';
echo '<sImmeubleProprietaire>'.trim($aRow['immeubleProprietaire']).'</sImmeubleProprietaire>\n';
echo '<sAdresseProprietaire>'.trim($aRow['adresseProprietaire']).'</sAdresseProprietaire>\n';
echo '<iCodePostalProprietaire>'.$aRow['codePostalProprietaire'].'</iCodePostalProprietaire>\n';
echo '<sVilleProprietaire>'.trim($aRow['villeProprietaire']).'</sVilleProprietaire>\n';
echo '<sPrenomProprietaire>'.trim($aRow['prenomProprietaire']).'</sPrenomProprietaire>\n';
echo '<iCodePostalBien>'.$aRow['CodePostalBien'].'</iCodePostalBien>\n';
echo '<sAdresseBien>'.$aRow['adresseBien'].'</sAdresseBien>\n';
echo '<sImmeubleBien>'.$aRow['immeubleBien'].'</sImmeubleBien>\n';
echo '<sVilleBien>'.$aRow['villeBien'].'</sVilleBien>\n';
}
}else{
throw new Exception('Connection sql impossible');
}
echo '</sInformationDossier>\n';
header('Content-Type: text/xml');
//on ferme la connexion avec la base de données
$oConnection=NULL;
}
?>[/php]
et voici maintenant mon fichier Ajax.js
[php]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
}
// fonction de nettoyage de notre feuille xml
function Preclean(c){
if(!c.data.replace(/\s/g,''))
c.parentNode.removeChild(c);
}
function clean(d){
var bal=d.getElementsByTagName('*');
for(i=0;i<bal.length;i++){
a=bal[i].previousSibling;
if(a && a.nodeType==3)
Preclean(a);
b=bal[i].nextSibling;
if(b && b.nodeType==3)
Preclean(b);
}
return d;
}
/**
* Méthode qui sera appelée sur le click du bouton
*/
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){
reponse = clean(xhr.responseXML.documentElement);
AfficheFormulaire(reponse);
}
}
// Ici on va voir comment faire du post
xhr.open("POST","Ajax.php",true);
// ne pas oublier ça pour le post
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
// ici, l\'id de l\'auteur
HandleDuSelectBox= document.getElementById("IdCommande");
javaIdCommande = HandleDuSelectBox.options[HandleDuSelectBox.selectedIndex].value;
//on definit ce que doit envoyer notre script java il renverra $_POST [\'IdCommande\']
xhr.send("IdCommande="+javaIdCommande);
xhr.send(null);
}
/**Méthode d'affichage du formulaire**/
function AfficheFormulaire(xhr)
{
var docXML= xhr.responseXML;
//on recupere tous les elements de notre fichier xml
//par la suite on piourra optimiser ces lignes en utilisant un tableau
var sTitreProprietaire = docXML.getElementsByTagName("sTitreProprietaire");
var sNomProprietaire = docXML.getElementsByTagName("sNomProprietaire");
var sImmeubleProprietaire = docXML.getElementsByTagName("sImmeubleProprietaire");
var sAdresseProprietaire = docXML.getElementsByTagName("sAdresseProprietaire");
var iCodePostalProprietaire = docXML.getElementsByTagName("iCodePostalProprietaire");
var sVilleProprietaire = docXML.getElementsByTagName("sVilleProprietaire");
var sPrenomProprietaire = docXML.getElementsByTagName("sPrenomProprietaire");
var iCodePostalBien = docXML.getElementsByTagName("iCodePostalBien");
var sAdresseBien = docXML.getElementsByTagName("sAdresseBien");
var sImmeubleBien = docXML.getElementsByTagName("sImmeubleBien");
var sVilleBien = docXML.getElementsByTagName("sVilleBien");
//on crée une variable qui va nous crée le formulaire
var html= '';
html +='<input type="hidden" id="ImmeubleProprietaire" name="ImmeubleProprietaire" value="' +sImmeubleProprietaire+ '" />';
html +='<input type="hidden" id="AdresseProprietaire" name="AdresseProprietaire" value="' +sAdresseProprietaire+ '" />;
html +='<input type="hidden" id="CodePostalProprietaire" name="CodePostalProprietaire" value="' +iCodePostalProprietaire+ '"/>;
html +='<input type="hidden" id="VilleProprietaire" name="VilleProprietaire" value="'+ sVilleProprietaire +'"/>;
html +='<dl><dt><label for="TitreProprietaire" >Titre proprietaire :</label></dt><dd><input type="text" id="TitreProprietaire" name="TitreProprietaire" value="'+ sTitreProprietaire +'" /></dd></dl>';
html +='<dl><dt><label for="NomProprietaire" >Nom du propriétaire :</label></dt><dd><input type="text" id="NomProprietaire" name="NomProprietaire" value="'+ sNomProprietaire +'" /></dd></dl>';
html +='<dl><dt><label for="PrenomProprietaire" >Prènom du propriétaire :</label></dt><dd><input type="text" id="PrenomProprietaire" name="PrenomProprietaire" value="'+ sPrenomProprietaire +'" /></dd></dl>';
html +='<dl><dt><label for="ImmeubleBien" >Immeuble du bien:</label></dt><dd><input type="text" id="ImmeubleBien" name="ImmeubleBien" value="'+ sImmeubleBien +'" /></dd></dl>';
html +='<dl><dt><label for="AdresseBien" >Adresse du bien:</label></dt><dd><input type="text" id="AdresseBien" name="AdresseBien" value="'+ sAdresseBien +'" /></dd></dl>';
html +='<dl><dt><label for="CodePostal" >Code postal du bien :</label></dt><dd><input type="text" id="CodePostalBien" name="CodePostalBien" value="'+ iCodePostalBien +'" /></dd></dl>';
html +='<dl><dt><label for="VilleBienAnalysimmo" >Ville du bien dans Analysimmo</label></dt><dd><input type="text" id="VilleBienAnalysimmo" name="VilleBienAnalysimmo" value="'+ sVilleBien +'" /></dd></dl>';
//je precise a quel endroit dans notre page ernt.php je souhaite affiche mon formulaire,nous avons crée un div du nom de AfficheFormulaireAjax au sein de notre page php
document.getElementById('AfficheFormulaireAjax').innerHTML += html;
}
[/php]
quelqu'un y voit il une erreur de ma part.en effet pour la creation du formulaire en java script ,j'ai fait appel a mon ami google.Merci d'avance pour vos lumieres!!