IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[DOM] Générer fichier XML depuis MySQL


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre averti Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Points : 359
    Points
    359
    Par défaut [DOM] Générer fichier XML depuis MySQL
    Salut,

    J'ai une table et je voudrai en faire un fichier xml

    voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    $table_id = 'color';
     
    $query = "SELECT * FROM $table_id";
     
    $dbresult = mysql_query($query, $link);
     
    // create a new XML document
     
    $doc = new DomDocument('1.0' , 'ISO-8859-1');
     
    // create root node
     
    $root = $doc->createElement('root');
     
    $root = $doc->appendChild($root);
     
     
    while($row = mysql_fetch_assoc($dbresult)) {   //--> Une ligne à la fois
     
     
     
      $occ = $doc->createElement($table_id);       //--> Un noed a chaque ligne
     
      $occ = $root->appendChild($occ);
     
     
     
      foreach ($row as $fieldname => $fieldvalue) {   //--> Ajout d'un noeud fils pour chaque champ
     
     
     
        $child = $doc->createElement($fieldname);    //--> Nom du child et sa valeur a ajouter
     
        $child = $occ->appendChild($child);
     
        $value = $doc->createTextNode($fieldvalue);
     
        $value = $child->appendChild($value);
     
      }
     
     
     
    }
    Malheureusement ça ne marche pas... help !!

  2. #2
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par Sekigawa Voir le message
    Malheureusement ça ne marche pas... help !!
    qu'est ce qui ne marche pas ?

  3. #3
    Membre averti Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Points : 359
    Points
    359
    Par défaut
    ça ne me génère rien du tout...

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Il manque visiblement deux choses dans votre code :

    Mis à part ces deux points, il fonctionne.

  5. #5
    Membre averti Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Points : 359
    Points
    359
    Par défaut
    Ouah c'est bon j'avais ouvlié de mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $doc->save('XML/test.xml');
    Voilà ça marche nickel, par contre j'ai pas de saut de ligne.. c'est normal ?

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Oui, si vous voulez formater (indentation et sauts de ligne) votre document vous devez positionner la propriété formatOutput de votre objet DomDocument à TRUE avant l'appel aux méthodes save* :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $doc->formatOutput = TRUE;

  7. #7
    Membre averti Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Points : 359
    Points
    359
    Par défaut
    Merci sa marche nickel !!

  8. #8
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 120
    Points : 66
    Points
    66
    Par défaut re
    Bonsoir,
    J'ai suivi ton code pour mon exemple.

    Le fichier prestation.xml a été généré mais il est presque vide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0"?>
     
    -<root>
     
    <id/>
     
    </root>
    il y a warning:

    Warning: Invalid argument supplied for foreach() in C:\Program Files\EasyPHP-DevServer-14.1VC9\data\localweb\projects\PortailRessources\genererXML.php on line 31

  9. #9
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 120
    Points : 66
    Points
    66
    Par défaut re
    Bonjour, où est le problème (Invalid Character Error)??

    Fatal error: Uncaught exception 'DOMException' with message 'Invalid Character Error' in C:\Program Files\EasyPHP-DevServer-14.1VC9\data\localweb\projects\PortailRessources\genererXML.php:34 Stack trace: #0 C:\Program Files\EasyPHP-DevServer-14.1VC9\data\localweb\projects\PortailRessources\genererXML.php(34): DOMDocument->createElement('0') #1 {main} thrown in C:\Program Files\EasyPHP-DevServer-14.1VC9\data\localweb\projects\PortailRessources\genererXML.php on line 34
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
      <?php
     
      $prestation = 'id';
     
      include ('db.inc.php');
     
      if($_SESSION['category']=="Utilisateur")
     
      $req="select * from prestation where name in (select p.name from inscription i, project p where i.pseudo= p.affectation and i.email = '".$email."')";
     
      else
     
    	$req="select * from prestation";  
     
    	$stmt	= $connexion->prepare($req);
     
    	$stmt->execute();	
     
    	$doc = new DomDocument();
     
    	$root = $doc->createElement('root');
     
    	$root = $doc->appendChild($root);
     
    	while( $results	=	$stmt->fetchAll(PDO::FETCH_ASSOC))
    	{
    		$occ = $doc->createElement($prestation);       //--> Un noeud a chaque ligne
     
    		$occ = $root->appendChild($occ);
     
    		foreach ($results as $fieldname => $fieldvalue)   //--> Ajout d'un noeud fils pour chaque champ
    		{ 					
     
    			$child = $doc->createElement($fieldname);    //--> Nom du child et sa valeur a ajouter
     
    			$child = $occ->appendChild($child);
     
    			$value = $doc->createTextNode($fieldvalue);
     
    			$value = $child->appendChild($value);
     
    		}
     
    	}
     
    	$doc->save('prestations/prestation.xml');
     
    	$doc->formatOutput = TRUE;
    	//$handle = fopen("prestations/prestation.xml", "r");
     
    	//$doc->load('prestations/prestation.xml');
     
      include('prestation.php');
      ?>
    Amicalement.

  10. #10
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 120
    Points : 66
    Points
    66
    Par défaut re
    Le 1er champ id et se commence par '1' et le 2eme date peut etre il commence par '0' c'est ça le problème?
    c'est comme cet exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="UTF-8"?>
    <rows>
    <row>
    <date><![CDATA[2015-09-01]]></date>
    <client><![CDATA[FTW Group Corporate]]></client>
    <project><![CDATA[START]]></project>
    <task><![CDATA[Tache matin]]></task>
    <start><![CDATA[8:00]]></start>
    <finish><![CDATA[8:01]]></finish>
    <duration><![CDATA[0.02]]></duration>
    <note><![CDATA[-Finir les tâches restantes]]></note>
    </row>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/12/2016, 17h36
  2. Générer fichier xml depuis .xls
    Par arimaze dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 23/09/2014, 14h02
  3. générer un fichier xml depuis une table avec data integrator BO
    Par explorateur dans le forum Alimentation
    Réponses: 0
    Dernier message: 19/01/2010, 14h22
  4. [SimpleXML] Générer un fichier XML depuis un objet
    Par CactO_o's dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 03/07/2008, 11h17
  5. [VB 2005]Générer fichier Excel depuis XML
    Par m-mas dans le forum Windows Forms
    Réponses: 1
    Dernier message: 27/02/2008, 08h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo