Problème de création xml en PHP avec données d'une BD

Problème de création xml en PHP avec données d'une BD - PHP - Programmation

Marsh Posté le 18-06-2013 à 14:47:31    

Bonjour à tous,
 
Je cherche à exporter une liste de rapports de visite présents dans une base de données MySQL. Mon projet est en PHP.
 
Voici mon code :  
 

Code :
  1. <?php
  2. include("fonctions.inc" );
  3.             $cnx = connecter();
  4. // Instancer la classe DOMDocument
  5.             $doc = new DOMDocument();
  6.             // Spécifier la version et l'encodage
  7.             $doc->version = '1.0';
  8.             $doc->encoding = 'ISO-8859-1';
  9.            
  10.             $requete = "SELECT * FROM RAPPORT_VISITE";
  11.             $rsRapports = mysql_query($requete, $cnx);
  12.            
  13.             while($ligne = mysql_fetch_array($rsRapports))
  14.             {
  15.             // Ajout la balise 'RAPPORT_VISITE' à la racine
  16.                 $rapport_balise = $doc->createElement('RAPPORT_VISITE');
  17.                 $doc->appendChild($rapport_balise);
  18.                
  19.                 $colonne1_balise = $doc->createElement('RAP_NUM', $ligne[0]);
  20.                 $doc->appendChild($colonne1_balise);
  21.                 $colonne2_balise = $doc->createElement('ID_VISITEUR', $ligne[1]);
  22.                 $doc->appendChild($colonne2_balise);
  23.                 $colonne3_balise = $doc->createElement('PRA_NUM', $ligne[2]);
  24.                 $doc->appendChild($colonne3_balise);
  25.                 $colonne4_balise = $doc->createElement('RAP_DATE', $ligne[3]);
  26.                 $doc->appendChild($colonne4_balise);
  27.                 $colonne5_balise = $doc->createElement('RAP_BILAN', $ligne[4]);
  28.                 $doc->appendChild($colonne5_balise);
  29.                 $colonne6_balise = $doc->createElement('RAP_MOTIF', $ligne[5]);
  30.                 $doc->appendChild($colonne6_balise);
  31.                
  32. //               // Spécifier que ces balises sont des "enfants" de la balse "RAPPORT_BALISE"
  33.                 $rapport_balise->appendChild($colonne1_balise);
  34.                 $rapport_balise->appendChild($colonne2_balise);
  35.                 $rapport_balise->appendChild($colonne3_balise);
  36.                 $rapport_balise->appendChild($colonne4_balise);
  37.                 $rapport_balise->appendChild($colonne5_balise);
  38.                 $rapport_balise->appendChild($colonne6_balise);
  39.             }
  40.            
  41.             $doc->formatOutput = true
  42.             // Save this to test.xml
  43.             $doc->save('test.xml');
  44. ?>


 
 
Le message d'erreur affiche :  
Erreur d'analyse XML : données incompréhensibles après l'élément de document
Emplacement : file:///C:/xampp/htdocs/SituationPro2/test.xml
Numéro de ligne 10, Colonne 1 :
 
Le problème c'est que ça n'affiche que la balise de départ : <RAPPORT_VISITE> et à la deuxième ligne : ^
 
Lorsque je fais une requête sur un seul rapport de visite, tout s'affiche correctement quand j'ouvre le fichier xml sous notepad++ :

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <RAPPORT_VISITE>
  3.   <RAP_NUM>1</RAP_NUM>
  4.   <ID_VISITEUR>3</ID_VISITEUR>
  5.   <PRA_NUM>23</PRA_NUM>
  6.   <RAP_DATE>2002-04-18</RAP_DATE>
  7.   <RAP_BILAN>Médecin curieux, à recontacter en décembre pour réunion</RAP_BILAN>
  8.   <RAP_MOTIF>Actualisation annuelle</RAP_MOTIF>
  9. </RAPPORT_VISITE>


 
Lorsque je l'ouvre sur internet, ça s'affiche comme ça :

Code :
  1. - <RAPPORT_VISITE>
  2.         <RAP_NUM>1</RAP_NUM>
  3.         <ID_VISITEUR>3</ID_VISITEUR>
  4.         <PRA_NUM>23</PRA_NUM>
  5.         <RAP_DATE>2002-04-18</RAP_DATE>
  6.         -<RAP_BILAN>Médecin curieux, à recontacter en décembre pour réunion</RAP_BILAN>
  7.         <RAP_MOTIF>Actualisation annuelle</RAP_MOTIF>
  8. </RAPPORT_VISITE>


 
Je ne comprends pas le problème, pouvez-vous m'aider ?
 
EDIT: ce message n'apparait que lorsque j'ouvre le fichier avec Firefox.
Je viens de l'ouvrir avec Notepad++ et tous les rapports de visite sont présent. Le code fonctionne mais l'ouverture avec Firefox ne fonctionne pas, est-ce normal ?


Message édité par Profil supprimé le 18-06-2013 à 14:56:27
Reply

Marsh Posté le 18-06-2013 à 14:47:31   

Reply

Marsh Posté le 19-06-2013 à 10:20:45    

Mon avis est que tu dois avoir des caractères non échappés ou non convertis en entités XML.
 
Ex : si t'as le caractère < ou & dans l'un de tes données que du met en XML, ça va pas plaire au parser XML qui va te dire que ton XML est mal formé... Le parser XML est généralement très tatillon ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 19-06-2013 à 10:48:20    

Je ne connais pas l'implémentation DOM de php, mais il y a un truc qui me choque dans ton code : pourquoi est-ce que tu fais un "$doc->appendChild" avec chaque élément ? Normalement, ça ne devrait même pas fonctionner et ça devrait donner une erreur après le premier, vu qu'un document ne peut avoir qu'un fils direct (mais bon, la gestion des erreurs en PHP...  [:haha prozac]).
 
Du coup, est-ce que par hasard tu aurais autre chose que des blancs ou retours à la ligne après la fermeture de ton tag <RAPPORT_VISITE> ?
 
Sinon, est-ce que tu peux poster le xml obtenu quelque part ? Ça aiderait à comprendre ce qui pose problème.


---------------
Are you two fucking? Are you serious? Right in front of my salad?!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed