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

Messages postés
87
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
12 juin 2006
- - Dernière réponse : quynhhoa
Messages postés
1
Date d'inscription
mardi 8 août 2006
Statut
Membre
Dernière intervention
10 août 2006
- 10 août 2006 à 14:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37647-convertir-rapidement-une-table-mysql-en-fichier-xml-sans-preciser-les-champs

quynhhoa
Messages postés
1
Date d'inscription
mardi 8 août 2006
Statut
Membre
Dernière intervention
10 août 2006
-
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.
bouazizwajdi
Messages postés
4
Date d'inscription
samedi 14 janvier 2006
Statut
Membre
Dernière intervention
5 novembre 2010
-
comme ca:
<? echo " bonjour "; ?>
bouazizwajdi
Messages postés
4
Date d'inscription
samedi 14 janvier 2006
Statut
Membre
Dernière intervention
5 novembre 2010
-
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
mmconcept
Messages postés
2
Date d'inscription
jeudi 18 mai 2006
Statut
Membre
Dernière intervention
19 mai 2006
-
$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.
superbaloo78
Messages postés
87
Date d'inscription
vendredi 29 août 2003
Statut
Membre
Dernière intervention
19 mai 2006
-
# $req = mysql_query($sql,$mysql_link);
# $req2 = mysql_query($sql,$mysql_link);

sont reelements utiles ?
mettre $req2 = $req; ca serait pas mieux ?
malalam
Messages postés
10843
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18 -
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.
mmconcept
Messages postés
2
Date d'inscription
jeudi 18 mai 2006
Statut
Membre
Dernière intervention
19 mai 2006
-
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.
galadriann
Messages postés
87
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
12 juin 2006
-
Oui c'est vrai ... je travaille surtout avec PHP5 alors je n'ai pas vraiment regarder le DOM pour php4...
malalam
Messages postés
10843
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18 -
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.
galadriann
Messages postés
87
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
12 juin 2006
-
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...