CONVERTIR RAPIDEMENT UNE TABLE MYSQL EN FICHIER XML SANS PRECISER LES CHAMPS
galadriann
Messages postés84Date d'inscriptionmercredi 7 mai 2003StatutMembreDernière intervention12 juin 2006
-
19 mai 2006 à 08:17
quynhhoa
Messages postés1Date d'inscriptionmardi 8 août 2006StatutMembreDernière intervention10 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.
quynhhoa
Messages postés1Date d'inscriptionmardi 8 août 2006StatutMembreDernière intervention10 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és4Date d'inscriptionsamedi 14 janvier 2006StatutMembreDernière intervention 5 novembre 2010 22 mai 2006 à 14:05
comme ca:
<? echo " bonjour "; ?>
bouazizwajdi
Messages postés4Date d'inscriptionsamedi 14 janvier 2006StatutMembreDerniè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és2Date d'inscriptionjeudi 18 mai 2006StatutMembreDernière intervention19 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és87Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention19 mai 2006 19 mai 2006 à 20:24
sont reelements utiles ?
mettre $req2 = $req; ca serait pas mieux ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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és2Date d'inscriptionjeudi 18 mai 2006StatutMembreDernière intervention19 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és84Date d'inscriptionmercredi 7 mai 2003StatutMembreDernière intervention12 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és10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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és84Date d'inscriptionmercredi 7 mai 2003StatutMembreDernière intervention12 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);
10 août 2006 à 14:47
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.
22 mai 2006 à 14:05
<? echo " bonjour "; ?>
22 mai 2006 à 14:03
19 mai 2006 à 23:05
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.
19 mai 2006 à 20:24
# $req2 = mysql_query($sql,$mysql_link);
sont reelements utiles ?
mettre $req2 = $req; ca serait pas mieux ?
19 mai 2006 à 13:57
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.
19 mai 2006 à 13:39
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.
19 mai 2006 à 10:53
19 mai 2006 à 09:23
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.
19 mai 2006 à 08:17
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...