begin process at 2012 02 12 03:28:42
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Xml

 > EXPORTER UNE TABLE MYSQL VERS UN FICHIER XML AVEC PHP

EXPORTER UNE TABLE MYSQL VERS UN FICHIER XML AVEC PHP


 Information sur la source

Note :
7,33 / 10 - par 3 personnes
7,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Xml Niveau :Débutant Date de création :25/01/2004 Date de mise à jour :25/01/2004 15:02:34 Vu :39 416

Auteur : OriOn

Ecrire un message privé
Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note

 Description

Un bout de code php qui permet l'exportation du contenu d'une table MySQL vers un fichier XML.

Cas d'utilisation :
- sauvegarde de table
- différentes structures de contenu
- etc...;


Source

  • - carnet.sql :
  • CREATE TABLE personne (
  • nom varchar(255),
  • prenom varchar(255),
  • age int(2)
  • )
  • - carnetMysqlToXml.php :
  • <?php
  • /*
  • * Penser à ouvrir une connexion vers la base mysql
  • * Ecrire une requête ($q) pour récupérer les données de la table
  • */
  • $xml = '<?xml version="1.0" encoding="ISO-8859-1"?>'.'<carnet>';
  • while ($row = mysql_fetch_array($q)) {
  • $xml .= '<personne>';
  • $xml .= '<nom>'.$row['nom'].'</nom>';
  • $xml .= '<prenom>'.$row['prenom'].'</prenom>';
  • $xml .= '<age>'.$row['age'].'</age>';
  • $xml .= '</personne>';
  • }
  • $xml .= '</carnet>';
  • $fp = fopen("carnetMysqlToXml.xml", 'w+');
  • fputs($fp, $xml);
  • fclose($fp);
  • echo 'Export XML effectue !<br><a href="carnetMysqlToXml.xml">Voir le fichier</a>';
- carnet.sql :

CREATE TABLE personne (
	nom varchar(255),
	prenom varchar(255),
	age int(2)
)

- carnetMysqlToXml.php :

<?php
/*
 * Penser à ouvrir une connexion vers la base mysql
 * Ecrire une requête ($q) pour récupérer les données de la table
*/

$xml = '<?xml version="1.0" encoding="ISO-8859-1"?>'.'<carnet>';
		while ($row = mysql_fetch_array($q)) {
			$xml .= '<personne>';
			$xml .= '<nom>'.$row['nom'].'</nom>';
			$xml .= '<prenom>'.$row['prenom'].'</prenom>';
			$xml .= '<age>'.$row['age'].'</age>';
			$xml .= '</personne>';
		}
		$xml .= '</carnet>';
		
		$fp = fopen("carnetMysqlToXml.xml", 'w+');
		fputs($fp, $xml);
		fclose($fp);
		
		echo 'Export XML effectue !<br><a href="carnetMysqlToXml.xml">Voir le fichier</a>';

 Conclusion

Bon courage ;-)


 Sources du même auteur

PARSER UN RSS AVEC SIMPLEXML
EXPORTER UNE TABLE MYSQL VERS UN FICHIER XML AVEC DOMXML
PARSER UN FICHIER XML AVEC DOMXML ET LE METTRE EN FORME AVEC...
CRÉER ET UTILISER LES FONCTIONS PHP
LA PAGINATION (AFFICHAGE PAR PAGE)

 Sources de la même categorie

OBTENIR LES TAUX DE CHANGE DU JOUR EN EUROS par oallais
Source avec Zip AFFICHER LES FILM EN SALLE par slhuilli
Source avec Zip Source avec une capture MINI-PROCESSEUR XPROC (PIPELINE XML) par ordiman85
Source avec Zip Source avec une capture XML MAPPING TO CLASS OBJECTS / CHARGEMENT / PARSING / MODIFI... par aKheNathOn
Source avec Zip Source avec une capture VIEWER POUR JALBUM SKIN CHAMELEON LIVRE D'OR par ym_trainz

Commentaires et avis

Commentaire de afad le 26/04/2004 15:25:14

Salut, je suis un peu neophyte en php, est ce que de la même manière, je peux écrire un flux RSS avec PHP (à partir de news écrite dans une table MySQL)...

Qu'est ce qui change,la syntaxe du xml, c'est tout ??

A+
aFaD

Commentaire de OriOn le 26/04/2004 21:05:42 administrateur CS

RSS = XML

Réfléchit à ce que je viens de dire ;-)

Commentaire de afad le 27/04/2004 09:04:41

J'adore les devinettes, lol
OK, Faut juste que je respecte la DTD RSS 2.0, c'est dans mes cordes....

Merci A+
aFaD

Commentaire de sophie13 le 27/10/2004 17:06:27

Bravo pour ce script génial.
Comment dois-je faire pour générer un fichier XML dans le cas où <personne> serait un élément et où les informations nom, prenom, age seraient des attributs de <personne> ?
Exemple :
<carnet>
<personne nom="Untel" prenom="Isidore" age="31"/>
</carnet>

En effet, l'intérêt d'utiliser des attributs est qu'ils sont bien mieux "lus" dans une application Flash.
Merci cent mille fois d'avance pour votre aide.

Commentaire de OriOn le 28/10/2004 09:05:28 administrateur CS

$xml .= '<personne nom="'.$row['nom'].'"/> ne fonctionne pas ?-)

Commentaire de sophie13 le 28/10/2004 10:58:34

Bonjour,

En fait, voici la réponse que j'ai pu obtenir :

$xml .= '<personne';
$xml .= 'nom="'.$row['nom'].'" '; // ou le nom entre crochet correspond au champ de la base de données
$xml .= 'prenom="'.$row['prenom'].'" ';
$xml .= 'age="'.$row['age'].'" ';
$xml .= '/>';
        }
        $xml .= '</photos>';

Ce qu'il y a d'assez extraordinaire, c'est que si après avoir lancé la page en php, si j'ai le malheur de la réactualiser, le fichier php se transforme et devient invalide :

$xml .= '<personne';
$xml .= 'nom="'.$row['nom'].'" '].'" ';
$xml .= 'prenom="'.$row['prenom'].'" '].'" ';
$xml .= 'age="'.$row['age'].'" '].'" ';
$xml .= '/>';
        }
        $xml .= '</photos>';

Des crochets et doubles côtes apparaissent à la fin des lignes. Il faut donc faire très attention à l'actualisation.

De plus, si j'utilise l'encodage XML UTF-8, le fichier n'est pas créé. Ce qui me pose des problèmes pour les accents.

Si quelqu'un a la solution ...
Sinon, ce code marche très bien.

Sophie

Commentaire de sniperbe le 27/11/2004 21:37:09

salut a tous,comment faire pour obtenir ceci??,

<?xml version='1.0' encoding='ISO-8859-1' standalone='yes'?>
<paquay>
<travail photo="g1.jpg>
<commentaires></commentaires>
</travail>
</paquay>

car je charge mes photo dans une bd afin de deja la ressortir en php,j'aimerais employé la meme bd pour ressortir les données en xml et pouvoir les mettre dans un diâporama en flash.Mais il faut que mon xml ressortant de ma bd soit absolument comme cela et qu'il puisse se mettre a jour a chaque upload dans la bd.Je sais pas si je suis compréhensible dans mes propos lolll j'en suis désolé.Dés que j'ai la reponse,je mettrais ma première sources en fla avec un diapo en fla,un en php avec une bd,idéal pour les sites en deux parties.Merci a tous de votre aide.

Commentaire de grandvizir le 24/06/2005 16:46:32

Ce RSS est certes enregistré sur le serveur, mais il faudrait le faire télécharger, puis le supprimer. Au niveau de la taille des XML, ça risque de flooder un max si la base est grosse... C'est effectivement un bout de code.

Commentaire de grandvizir le 25/06/2005 18:49:18

Je me suis renseigné et pour éveiller aux problèmes d'exportation, je vous conseille le lien suivant afin d'utiliser les fonctions HTMLSPECIALCHARS et ADDSLASHES.
http://www.phpcs.com/forum.v2.aspx?ID=495433

Et puis, au lieu de faire un lien en bas de page, pourquoi ne pas rediriger l'utilisateur.

Au final, on obtient ceci:

<?php
  function Display($Value) {
    return htmlspecialchars(addslashes($Value));
  }
  /* CONNEXION: $q étant le résultat d'une requète */
  $xml = '<?xml version="1.0" encoding="ISO-8859-1"?><carnet>';
  while ($dat = mysql_fetch_array($q)) {
    $xml .= '<personne>';
    $xml .= '<nom>'.Display($dat['nom']).'</nom>';
    $xml .= '<prenom>'.Display($dat['prenom']).'</prenom>';
    $xml .= '<age>'.Display($dat['age']).'</age>';
    $xml .= '</personne>';
  }
  $xml .= '</carnet>';

  $Fichier = fopen('carnetMysqlToXml.xml', 'a+');
  fputs($Fichier, $xml);
  fclose($Fichier);

  header('Location: carnetMysqlToXml.xml');
?>

Le soucis est qu'il faudra faire du ménage après sur le serveur... Au final, avec ma proposition, on a un truc qui ne bugge pas. En espérant que phpMyAdmin 253 aura été corrigé...

Commentaire de grandvizir le 26/06/2005 15:31:08

Désolé de travailler au goutte à goutte, mais je découvre petit à petit les secrets bizarres du XML. Pour éviter d'enregistrer sur le serveur, allez voir: http://www.phpcs.com/code.aspx?id=13282

Commentaire de DrChal le 01/03/2007 14:14:50

Salut
J'ai essayé ton code et malheureusement. J'ai les erreurs suivante:
<b>
Warning: domxml_open_file(): I/O in c:\program files\easyphp1-8\www\xml\phpxml6\ihm\carnet.php on line 2

Warning: domxml_open_file(): warning : in c:\program files\easyphp1-8\www\xml\phpxml6\ihm\carnet.php on line 2

Warning: domxml_open_file(): failed to load external entity "../xml/carnet.xml" in c:\program files\easyphp1-8\www\xml\phpxml6\ihm\carnet.php on line 2

Warning: domxml_xslt_stylesheet_file(): I/O in c:\program files\easyphp1-8\www\xml\phpxml6\ihm\carnet.php on line 3

Warning: domxml_xslt_stylesheet_file(): warning : in c:\program files\easyphp1-8\www\xml\phpxml6\ihm\carnet.php on line 3

Warning: domxml_xslt_stylesheet_file(): failed to load external entity "../xml/carnet.xsl" in c:\program files\easyphp1-8\www\xml\phpxml6\ihm\carnet.php on line 3

Fatal error: Call to a member function on a non-object in c:\program files\easyphp1-8\www\xml\phpxml6\ihm\carnet.php on line 4
</b>

Peux tu me dire s'il n'y a pas un paramètre supplémentaire à configurer dans easyphp?
J'ai déjà rajouter les extensions :
- php_domxml
- php_xmlrpc
- php_xslt

J'ai remarqué une chose, si je mets le chemin réel du fichier xml, ça marche.
Comment peut on le faire avec un chemin absolu?

Merci davance


Commentaire de crusty8x le 31/05/2007 09:32:20

je ne comprends pas d'ou ça viens mais j'ai de balises qui se répètent à des endroits ou elles n'ont pas lieu d'etre.

<descripteur>
   <nom>Cls</nom>
   <comment>closed limit switch</Comment></comment>
</descripteur>

donc comme je viens de le dire, je ne comprends pas s'ou viens cette balise </Comment>...

merci d'avance.

Commentaire de willink le 24/07/2007 19:02:32

Nickel ce pti bout de code... maintenant, à chaque fois que j'ajoute un article sur mon blog, le flux RSS se mets automatiquement... C'est parfait...
Mon blog : mouchel.philippe.free.fr

Commentaire de lecappa le 22/02/2008 12:17:21

Et point de vue Accent ? c'est bon? car l'exporte dans le fichier xml et qd je veux le lire dans mon flash, les accents sautent !
cela vient de l'encodage ou de mon flash?

Commentaire de game50 le 21/04/2008 13:52:40

Comment on fait pour la requette $q? merci

Commentaire de CasT0r66 le 22/06/2009 20:39:55 9/10

super cette source, facile à comprendre et modifier selon l'arborescence souhaité

Commentaire de ouassilachraf le 24/07/2009 01:44:05

a mr.grandvizir
j'ai testé ca mais ca marche pas

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,388 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales