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

galadriann Messages postés 84 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 12 juin 2006 - 19 mai 2006 à 08:17
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
10 août 2006 à 14:47
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
22 mai 2006 à 14:05
comme ca:
<? echo " bonjour "; ?>
bouazizwajdi Messages postés 4 Date d'inscription samedi 14 janvier 2006 Statut Membre Dernière intervention 5 novembre 2010
22 mai 2006 à 14:03
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
19 mai 2006 à 23:05
$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
19 mai 2006 à 20:24
# $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 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
19 mai 2006 à 13:57
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
19 mai 2006 à 13:39
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 84 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 12 juin 2006
19 mai 2006 à 10:53
Oui c'est vrai ... je travaille surtout avec PHP5 alors je n'ai pas vraiment regarder le DOM pour php4...
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
19 mai 2006 à 09:23
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 84 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 12 juin 2006
19 mai 2006 à 08:17
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...
Rejoignez-nous