begin process at 2012 05 27 22:30:25
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Xml

 > CONVERTIR RAPIDEMENT UNE TABLE MYSQL EN FICHIER XML SANS PRECISER LES CHAMPS

CONVERTIR RAPIDEMENT UNE TABLE MYSQL EN FICHIER XML SANS PRECISER LES CHAMPS


 Information sur la source

Note :
7 / 10 - par 2 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Xml Classé sous :mysql, xml, rss, convertir, table Niveau :Débutant Date de création :18/05/2006 Vu :14 884

Auteur : mmconcept

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

 Description

Voici un petit script qui permet de créer rapidement des fichiers xml contenant tous les champs des tables converties.

Source

  • <?php
  • /* SCRIPT PERMETTANT DE CONVERTIR UNE TABLE MYSQL EN FICHIER XML SANS PRECISER LES CHAMPS */
  • // INFOS DE CONNEXION A LA BDD
  • $Sbddhost = 'localhost';
  • $Sbdduser = 'utilisateur';
  • $Sbddpass = 'mot_de_passe';
  • $Sbddbase = 'nom_base';
  • $Sbdderreur = 'La base est inaccessible.';
  • $Sbddtable = 'nom_table'; // TABLE A CONVERTIR
  • $Sdatalimit = 0; // LIMIT DE DONNEES A CONVERTIR ( 0 = toutes )
  • // DEFINIR L'ORDRE DE LECTURE (NECCESSITE DE CONNAITRE LE CHAMPS DE REFERENCE)
  • // LAISSER VIDE SI AUCUN ORDRE A DEFNIR
  • $dataorder = ''; // EX: ID DESC
  • $filename = 'mesfichiers/fichier.xml'; // REPERTOIRE ET NOM DU FICHIER
  • $fileerreur = 'Le fichier ne peut être créé vérifier les droits du répertoire';
  • // CONNEXION ET LECTURE TABLE
  • if(!$mysql_link = @mysql_connect($Sbddhost,$Sbdduser,$Sbddpass))
  • {
  • echo $Sbdderreur;
  • exit;
  • }
  • $sql = "SELECT * FROM $Sbddbase.$Sbddtable";
  • if(!empty($dataorder)) $sql .= " ORDER BY $dataorder";
  • if($Sdatalimit >= 1) $sql .= " LIMIT $Sdatalimit";
  • $req = mysql_query($sql,$mysql_link);
  • $req2 = mysql_query($sql,$mysql_link);
  • mysql_close($mysql_link); // FERME LA CONNEXION DBB
  • // CONVERSION
  • $file = '<?xml version="1.0" encoding="iso-8859-15"?><rss version="2.0"><channel>';
  • while($row = mysql_fetch_row($req)) {
  • $file .= '<item>';
  • $i = 0;
  • foreach($row as $r){
  • $file .= '<##'.$i.'##>'.trim($r).'</##'.$i.'##>'; // CREATION DE TAGS
  • ++$i;
  • }
  • $file .= '</item>';
  • }
  • $file .= '</channel></rss>';
  • $i = 0;
  • while($field = mysql_fetch_field($req2)) {
  • $file = ereg_replace("##$i##",$field->name,$file); // REMPLACE LES TAGS
  • ++$i;
  • }
  • // CREATION DU FICHIER
  • if($fp = @fopen($filename,"w")){
  • fputs($fp,$file);
  • fclose($fp);
  • echo '<a href='.$filename.'>Afficher '.$filename.'</a>';
  • }else{ echo $fileerreur; }
  • ?>
<?php
/* SCRIPT PERMETTANT DE CONVERTIR UNE TABLE MYSQL EN FICHIER XML SANS PRECISER LES CHAMPS */

// INFOS DE CONNEXION A LA BDD

$Sbddhost = 'localhost';
$Sbdduser = 'utilisateur';
$Sbddpass = 'mot_de_passe';
$Sbddbase = 'nom_base';
$Sbdderreur = 'La base est inaccessible.';

$Sbddtable = 'nom_table'; // TABLE A CONVERTIR

$Sdatalimit = 0; // LIMIT DE DONNEES A CONVERTIR ( 0 = toutes )

// DEFINIR L'ORDRE DE LECTURE (NECCESSITE DE CONNAITRE LE CHAMPS DE REFERENCE)
// LAISSER VIDE SI AUCUN ORDRE A DEFNIR
$dataorder = ''; // EX: ID DESC

$filename = 'mesfichiers/fichier.xml'; // REPERTOIRE ET NOM DU FICHIER

$fileerreur = 'Le fichier ne peut être créé vérifier les droits du répertoire';

// CONNEXION ET LECTURE TABLE

if(!$mysql_link = @mysql_connect($Sbddhost,$Sbdduser,$Sbddpass))
{
echo $Sbdderreur;
exit;
}

$sql = "SELECT * FROM $Sbddbase.$Sbddtable";

if(!empty($dataorder)) $sql .= " ORDER BY $dataorder";

if($Sdatalimit >= 1) $sql .= " LIMIT $Sdatalimit";

$req = mysql_query($sql,$mysql_link);
$req2 = mysql_query($sql,$mysql_link);

mysql_close($mysql_link); // FERME LA CONNEXION DBB

// CONVERSION

$file = '<?xml version="1.0" encoding="iso-8859-15"?><rss version="2.0"><channel>';

while($row = mysql_fetch_row($req)) {

$file .= '<item>';
$i = 0;
foreach($row as $r){
$file .= '<##'.$i.'##>'.trim($r).'</##'.$i.'##>'; // CREATION DE TAGS
++$i;
}
$file .= '</item>';

}
$file .= '</channel></rss>';

$i = 0;
while($field = mysql_fetch_field($req2)) {
$file = ereg_replace("##$i##",$field->name,$file); // REMPLACE LES TAGS
++$i;
}

// CREATION DU FICHIER

if($fp = @fopen($filename,"w")){
fputs($fp,$file);
fclose($fp);
echo '<a href='.$filename.'>Afficher '.$filename.'</a>';
}else{ echo $fileerreur; }


?>



 Sources de la même categorie

Source avec Zip JEU FRISE CHRONOLOGIQUE EN XML par mldvb
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

 Sources en rapport avec celle ci

Source avec Zip RECHERCHE DES DOUBLONS DANS UNE TABLE MYSQL EN SÉLECTIONNANT... par aladec2007
Source avec Zip Source avec une capture CONVERTIR BASE FIREBIRD EN MYSQL par castelfrederic29
Source avec une capture GÉNÉRATION/GESTION DE FORMULAIRE VIA FICHIER XML par Garno
Source avec Zip Source avec une capture CARTE DE L'EUROPE EN FONCTION DES VISITEURS par GillesWebmaster
Source avec Zip [PHP5][CLASSE] GÉNÉRATION DE FLUX RSS 2.0 par webdeb

Commentaires et avis

Commentaire de galadriann le 19/05/2006 08:17:20

Salut,

L'idee est interessante car cela permet d'eviter d'utiliser les fonctions PHP5 pour ceux qui ne l'aurait pas encore.
Par contre, pourquoi mettre des tags <channel> et <rss> ?  ce n'est pas utile pour un simple fichier xml et ici on ne cree pas un fichier rss ...
Il serait aussi interessant de placer des retours a ligne pour rendre le fichier xml plus lisible et faire un htmlentities sur les valeurs au cas ou on aurait des characteres speciaux (qui dans le test que j'ai fait invalide le fichier xml, j'avais un '&' dans une des valeurs)...

sinon juste a tire informatif, voici comment on fait en PHP 5 (tire d'un livre sur xml) :
<?php
$database='mabase';
$table_id='matable';
if(!$dbconnect = mysql_connect('localhost', 'user', 'password')) {
   echo "Connection failed to the host 'localhost'.";
   exit;
} // if
if (!mysql_select_db($database))
{
   echo 'Cannot connect to database \''.$database.'\'';
   exit;
} // if

$query = "SELECT * FROM $table_id";
$dbresult = mysql_query($query, $dbconnect);
// create a new XML document
$doc = new DomDocument('1.0');
// create root node
$root = $doc->createElement('root');
$root = $doc->appendChild($root);

// process one row at a time
while($row = mysql_fetch_assoc($dbresult)) {

  // add node for each row
  $occ = $doc->createElement($table_id);
  $occ = $root->appendChild($occ);


  // add a child node for each field
  foreach ($row as $fieldname => $fieldvalue)
  {
    $child = $doc->createElement($fieldname);
    $child = $occ->appendChild($child);

    $value = $doc->createTextNode($fieldvalue);
    $value = $child->appendChild($value);

  } // foreach
} // while

// get completed xml document
$xml_string = $doc->saveXML();

echo $xml_string;
?>

je met 8 car l'idee est interessante...

Commentaire de malalam le 19/05/2006 09:23:41 administrateur CS

Hello,

j'aime bien l'idée aussi.
Tu aurais pu aller plus loin, en mettant un attribut aux champs, indiquant leur type.
Sinon, php4 gère aussi DOM, hein. C'est pas le même, mais y en a un aussi.

Commentaire de galadriann le 19/05/2006 10:53:34

Oui c'est vrai ... je travaille surtout avec PHP5 alors je n'ai pas vraiment regarder le DOM pour php4...

Commentaire de mmconcept le 19/05/2006 13:39:07

Merci pour vos appréciations :)

Je suis totalement autodidacte en php/mysql, j'ai tout appris sur Internet en étudiant les différentes sources et bouts de codes glanés à droite et à gauche.

Ce qui me permet tout de même de proposer mes services en developpement (voir site perso).

Quant à XML cela fait à peine 2 mois que je m'y interesse, donc ca fait bien plaisir cette note ;)

Concernant les retours à la lignes je les ai volontairement omis car avec ou sans quand j'ouvre le fichier créé la lecture est ok (j'ai testé que sur IE) et la lecture avec un parseur l'est aussi.

Pour le htmlentities en effet c'est un oubli de ma part.

Pour <channel> et <rss> comme je dis plus haut je débute en XML et comme c'est present sur tous les flux sur lesquels j'ai du travailler jusqu'a présent, il m'a semblé important de les ajouter.

Commentaire de malalam le 19/05/2006 13:57:44 administrateur CS

channel et rss sont uniquement utiles pour les flux rss.
Et un flux rss, c'est du xml, certes, mais c'est simplement un formattage particulier d'un flux xml dans un but bien précis.
Bref, ils n'ont rien à faire dans ton code effectivement.

Commentaire de superbaloo78 le 19/05/2006 20:24:30

# $req = mysql_query($sql,$mysql_link);
# $req2 = mysql_query($sql,$mysql_link);

sont reelements utiles ?
mettre $req2 = $req; ca serait pas mieux ?

Commentaire de mmconcept le 19/05/2006 23:05:01

$req2 = $req; ne fonctionne pas.
C'est pour cela que j'ai doublé le mysql_query
Il y a certainement une solution moins gourmande mais pour l'instant je ne la connais pas.

Commentaire de bouazizwajdi le 22/05/2006 14:03:36

lorsua j'inserre du code dans mon forum que j'ai ceer moi meme le code n'apparait pas il va etre lu par le navigateur. je fait quoi pour l'afficher

Commentaire de bouazizwajdi le 22/05/2006 14:05:58

comme ca:
<? echo "<font color=green> bonjour </font>"; ?>

Commentaire de quynhhoa le 10/08/2006 14:47:28

Cher MMCONCEPT
Aurions nous le plaisir de voir un jour le code PHP pour exporter la base mysql (en donnant juste le nom de la base ) vers une base XML complète sans avoir à donner le nom des tables  car imaginons  une base avec 1000 tables cela veut dire qu'on doit avoir milles petits programmes ?
Ceci dit , ton code est très bien , j'ai fait tourner .. c'est nickel . Je donne 10.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

convertir date Fr en anglais avant enregistrement mysql [ par bruno3591 ] Bonjour,Tout est dit dans le titre ou presque.Je me sers d'un code javascript pour faire apparaitre un petit calendrier qui, une fois la date choisit, insérer contenu xml dans bdd mysql [ par indutec ] Bonjour à tous, Voilà, j'aimerais encoder le contenu d'un fichier xml, que je ne génère pas, vers une base de données mysql. Pour l'instant, il m'enc insérer contenu xml dans bdd mysql [ par indutec ] Bonjour, Je souhaite insérer le contenu d'un fichier xml externe dans une base de données sur mon serveur. Pour l'instant, il me génère une erreur Apllication web en ligne [ par aabou ] Bonjour,J'ai instllé easyphp et j'ai crée la base de mon apllication avec mysql "minformatique" avec 4 tables mais en exécutant le script voici le mes mysql et xml [ par brudao ] bonjour! j'exporte la structure (sans les enregistrements) d' une base de donnée mysql en xml. mais en fait, je désire exporter la structure avec les Parser du xml pour faire un lecteur RSS [ par shadow1779 ] Bonjour,je suis en train de développer un portail et j'aurai besoin de réaliser ma propre classe pour lire des flux RSS, actuellement j'ai trouvé une problème export CSV [ par chapata ] Bijour ,j'ai une erreur lors de mon exportation de ma table MySQL en CSV ... mais je ne comprend pas tout ...mon code :< widget+rss+php [ par lsamsoumal ] Bonjour tt le monde: j'ai un code php qui génére un fichier xml contenant des flux rss.Maintenant je veut developper un widget qui récupére les flux r widget avec flux rss [ par pandouta08 ] j'ai un code php d'un générateur d'un fichier xml contenant un ensemble de lien et j'ai un widget yahoo que j'ai créé ,je veux que mon widget yahoo af BD MySql vers fichier XML [ par lachaiseduroi ] Bonjour, J'ai créer une base de données Mysql avec 6 tables et je recherche comment l'exporter en un fichier XML. Je débute en PHP et Mysql et bien en


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 0,374 sec (4)

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