GENERER A LA VOLER UN FICHIER XML VIA UNE TABLE SQL + PHP
cs_pdl
Messages postés134Date d'inscriptionmardi 20 novembre 2001StatutMembreDernière intervention16 juin 2008
-
22 avril 2004 à 08:26
ibompuis
Messages postés5Date d'inscriptiondimanche 28 avril 2002StatutMembreDernière intervention23 mai 2008
-
23 mai 2008 à 08:22
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
ibompuis
Messages postés5Date d'inscriptiondimanche 28 avril 2002StatutMembreDernière intervention23 mai 2008 23 mai 2008 à 08:22
Extra, j'essai dadapter cette superbe source mais j'ai n petit souci de mise en forme xml :
le script :
<?php
//connection à la base de donnée
$db_name = "cook";
$link = mysql_connect("localhost", "root", "root") or die("Connexion impossible.");
$table_name = 'jos_groups';
$db = mysql_select_db($db_name);
$query = "select * from " . $table_name;
$result = mysql_query($query, $link) or die("Impossible d'interroger la base de données");
$num = mysql_num_rows($result);
// connaître le nbre de champs
$nombre=mysql_num_fields($result);
// s'il y a des résultats
if ($num != 0) {
$file= fopen("results.xml", "w");
$_xml ="<?xml version="1.0" encoding="UTF-8" ?>\r\n";
$_xml .="<newsList>\r\n";
while ($row = mysql_fetch_array($result)) {
for ($i=0;$i<$nombre;$i++){
$_xml .="<news>\r\n";
$champs=mysql_field_name($result,$i);
//convertit en utf8 pour les caractères accentués.
$contenu=utf8_encode($row[$champs]);
sletis
Messages postés11Date d'inscriptiondimanche 13 février 2005StatutMembreDernière intervention29 mai 2005 28 avril 2006 à 16:51
génial ce code ;) bon travail!
sletis
Messages postés11Date d'inscriptiondimanche 13 février 2005StatutMembreDernière intervention29 mai 2005 28 avril 2006 à 16:51
génial ce code ;) bon travail!
cs_lir
Messages postés28Date d'inscriptiondimanche 19 janvier 2003StatutMembreDernière intervention26 mars 2008 20 janv. 2006 à 15:08
c'est possible deme dire les zones à changer par rapport à une base.
désolé je débute!
merci
cs_lir
Messages postés28Date d'inscriptiondimanche 19 janvier 2003StatutMembreDernière intervention26 mars 2008 20 janv. 2006 à 14:52
sympat
sawinashi
Messages postés2Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention24 octobre 2005 24 oct. 2005 à 03:20
C'est cool de voir un code repris et corrigé sur Codes sources (en douceur en plus, et sans aggressivité) ! Bravo les gars ! Pour une fois que c'est pas dans le genre 'sale-newbie-regarde-ce-que-tu-fais-c'est-bourré-de-problèmes-de-sécurité-ton-truc-je-te-mets(zéro-surtout-reviens-plus-par-ici'...
En plus ton code est intéréssant. :)
cs_FRAJA
Messages postés3Date d'inscriptionlundi 21 mars 2005StatutMembreDernière intervention10 avril 2008 28 juin 2005 à 15:32
Bonjour,
un petit complément pour gérer tous les champs de la table et transformer en utf8 pour garder les accents dans le fichier xml.
<?php
//nom de la table
$table_name="nom_de_la_table";
//connection à la base de donnée
include ("connect.php");
$query = "select * from " . $table_name;
$result = mysql_query($query) or die("Impossible d'interroger la base de données");
$num = mysql_num_rows($result);
// connaître le nbre de champs
$nombre=mysql_num_fields($result);
// s'il y a des résultats
if ($num != 0) {
$file= fopen("results.xml", "w");
$_xml ="<?xml version="1.0" encoding="UTF-8" ?>\r\n";
$_xml .="\r\n\";
while ($row = mysql_fetch_array($result)) {
for ($i=0;$i<$nombre;$i++){ $champs=mysql_field_name($result,$i);
//convertit en utf8 pour les caractères accentués.
$contenu=utf8_encode($row[$champs]);
$_xml .=\"\t<$champs>\" . $contenu . \"</$champs>\r\n\";
}
}
$_xml .="
";
fwrite($file, $_xml); fclose($file);
echo "Le fichier XML a etait créé Show source :).";
}
else {
echo "erreur";
}
?>
Franck
redisnotdead
Messages postés7Date d'inscriptionlundi 23 juin 2003StatutMembreDernière intervention 9 novembre 2005 14 avril 2005 à 18:01
Bonjoir ( une sorte de croisement entre bonjour et bonsoir )
J'ai bien aimé cette source qui m'as permis d'éffectuer une transition de data entre sql et flash (via xml) mais j'ai une petite question : j'utilise l'utf-8 et j'ai un petit soucis, les caractères spéciaux et accentués ne passe pas dans le xml géneré par ta méthode, alors je sait pas si je m'y prend mal ou si il y as une astuce (faire passer le tout par une String) et comme je suis du genre noob éternel sur php j'aurai bien besoin de vos lumières, merci d'avance et bon <?php ?>
___
Redisdead : mi codeur mi codé
cs_ceced
Messages postés70Date d'inscriptionlundi 12 mai 2003StatutMembreDernière intervention11 mai 2005 22 avril 2004 à 10:23
Pas mal pdl, eu pour votre CHAMP mafoi le champ d'une table! pour recuper l'id ou news tout depend de votre config!!!!
Bin voila , j aime bien partagé mes recettes de cuisine on dit toujour que les recettes peuvent etre amelioré!
Cordialement :p
cs_pdl
Messages postés134Date d'inscriptionmardi 20 novembre 2001StatutMembreDernière intervention16 juin 2008 22 avril 2004 à 08:54
Allez, pour être complet, je livre une version améliorée qui permet de mettre toutes les colonnes dans le fichier XML
if ($num != 0) {
$file= fopen("results.xml", "w");
$_xml ="<?xml version="1.0" encoding="ISO-8859-1" ?>\r\n";
$_xml .="\r\n\";
while ($row = mysql_fetch_array($result)) {
$_xml .=\"\t<row title=\\"\" . $row[0] . \"\\">\r\n\";
$i = 0;
while (list($key, $val) = each($row)) {
// évite d'avoirune ligne avec l'index de la colonne
list($key, $val) = each($row);
$_xml .=\"\t\t<$key>\" . $val . \"</$key>\r\n\";
$i++;
}
$_xml .=\"\t</row>\r\n\";
} $_xml .="
";
fwrite($file, $_xml);
fclose($file); echo "Le fichier XML a etait créé Show source :).";
} else {
echo "erreur";
}
cs_pdl
Messages postés134Date d'inscriptionmardi 20 novembre 2001StatutMembreDernière intervention16 juin 2008 22 avril 2004 à 08:26
C'est pas claire ton truc ! Qu'est-ce que l'on met à la place de "votrechamp" ? A quoi sert le test if ($row["votrechamp"]) ?
Et puis ton code ne permet pas de dumper toutes les colonnes de la requête de manière dynamique.
23 mai 2008 à 08:22
le script :
<?php
//connection à la base de donnée
$db_name = "cook";
$link = mysql_connect("localhost", "root", "root") or die("Connexion impossible.");
$table_name = 'jos_groups';
$db = mysql_select_db($db_name);
$query = "select * from " . $table_name;
$result = mysql_query($query, $link) or die("Impossible d'interroger la base de données");
$num = mysql_num_rows($result);
// connaître le nbre de champs
$nombre=mysql_num_fields($result);
// s'il y a des résultats
if ($num != 0) {
$file= fopen("results.xml", "w");
$_xml ="<?xml version="1.0" encoding="UTF-8" ?>\r\n";
$_xml .="<newsList>\r\n";
while ($row = mysql_fetch_array($result)) {
for ($i=0;$i<$nombre;$i++){
$_xml .="<news>\r\n";
$champs=mysql_field_name($result,$i);
//convertit en utf8 pour les caractères accentués.
$contenu=utf8_encode($row[$champs]);
$_xml .="\t<$champs>" . $contenu . "</$champs>\r\n";
$_xml .="</news>\r\n";
}
}
$_xml .="</newsList>";
fwrite($file, $_xml); fclose($file);
echo "Le fichier XML a était créé Show source :).";
}
else {
echo "erreur";
}
?>
le resulta :
<newsList>
<news>
0
</news>
<news>
<name>Public</name>
</news>
<news>
1
</news>
<news>
<name>Registered</name>
</news>
<news>
2
</news>
<news>
<name>Special</name>
</news>
</newsList>
Mon problème c'est que je voudrais plutot obtenir :
<newsList>
<news>
0
<name>Public</name>
</news>
<news>
1
<name>Registered</name>
</news>
<news>
2
<name>Special</name>
</news>
</newsList>
Une idéee comment procéder ?
Merci
28 avril 2006 à 16:51
28 avril 2006 à 16:51
20 janv. 2006 à 15:08
désolé je débute!
merci
20 janv. 2006 à 14:52
24 oct. 2005 à 03:20
En plus ton code est intéréssant. :)
28 juin 2005 à 15:32
un petit complément pour gérer tous les champs de la table et transformer en utf8 pour garder les accents dans le fichier xml.
<?php
//nom de la table
$table_name="nom_de_la_table";
//connection à la base de donnée
include ("connect.php");
$query = "select * from " . $table_name;
$result = mysql_query($query) or die("Impossible d'interroger la base de données");
$num = mysql_num_rows($result);
// connaître le nbre de champs
$nombre=mysql_num_fields($result);
// s'il y a des résultats
if ($num != 0) {
$file= fopen("results.xml", "w");
$_xml ="<?xml version="1.0" encoding="UTF-8" ?>\r\n";
$_xml .="\r\n\";
while ($row = mysql_fetch_array($result)) {
for ($i=0;$i<$nombre;$i++){ $champs=mysql_field_name($result,$i);
//convertit en utf8 pour les caractères accentués.
$contenu=utf8_encode($row[$champs]);
$_xml .=\"\t<$champs>\" . $contenu . \"</$champs>\r\n\";
}
}
$_xml .="
";
fwrite($file, $_xml); fclose($file);
echo "Le fichier XML a etait créé Show source :).";
}
else {
echo "erreur";
}
?>
Franck
14 avril 2005 à 18:01
J'ai bien aimé cette source qui m'as permis d'éffectuer une transition de data entre sql et flash (via xml) mais j'ai une petite question : j'utilise l'utf-8 et j'ai un petit soucis, les caractères spéciaux et accentués ne passe pas dans le xml géneré par ta méthode, alors je sait pas si je m'y prend mal ou si il y as une astuce (faire passer le tout par une String) et comme je suis du genre noob éternel sur php j'aurai bien besoin de vos lumières, merci d'avance et bon <?php ?>
___
Redisdead : mi codeur mi codé
22 avril 2004 à 10:23
Bin voila , j aime bien partagé mes recettes de cuisine on dit toujour que les recettes peuvent etre amelioré!
Cordialement :p
22 avril 2004 à 08:54
22 avril 2004 à 08:26
Et puis ton code ne permet pas de dumper toutes les colonnes de la requête de manière dynamique.
Tu peux certainement mieux faire.