Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

GENERER A LA VOLER UN FICHIER XML VIA UNE TABLE SQL + PHP


Information sur la source

Catégorie :Astuces Niveau : Débutant Date de création : 21/04/2004 Date de mise à jour : 21/04/2004 01:22:01 Vu : 8 791

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

Description

A pour but de generé a la volé le code xml a partir d'une table :)

1//connexion a la base
2// creation du fichier
3//Ecriture xml dans le fichier xml
4//lire le fichier xml (results.xml)


 

Source

  • <?php
  • $db_name = "nomdb";
  • $link = mysql_connect("localhost", "root", "") or die("Connexion impossible.");
  • $table_name = 'table';
  • $db = mysql_select_db($db_name, $link);
  • $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);
  • if ($num != 0) { $file= fopen("results.xml", "w"); $_xml ="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n"; $_xml .="<table>\r\n"; while ($row = mysql_fetch_array($result)) { if ($row["votrechamp"]) { $_xml .="\t<page title=\"" . $row["votrechamp"] . "\">\r\n"; $_xml .="\t\t<file>" . $row["votrechamp"] . "</file>\r\n";$_xml .="\t</page>\r\n"; } else { $_xml .="\t<page title=\"" . $row["votrechamp"] . "\">\r\n";$_xml .="\t\t<para>". $row["votrechamp"] ." passe:". $row["pass"] ."</para>\r\n"; $_xml .="\t</page>\r\n"; } } $_xml .="</table>"; fwrite($file, $_xml); fclose($file); echo "Le fichier XML a etait créé <a href=\"results.xml\">Show source :).</a>"; } else { echo "erreur"; } ?>
<?php 


$db_name = "nomdb";
$link = mysql_connect("localhost", "root", "") or die("Connexion impossible.");
$table_name = 'table';

$db = mysql_select_db($db_name, $link);


$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);




  if ($num != 0) { $file= fopen("results.xml", "w"); $_xml ="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n"; $_xml .="<table>\r\n"; while ($row = mysql_fetch_array($result)) { if ($row["votrechamp"]) { $_xml .="\t<page title=\"" . $row["votrechamp"] . "\">\r\n"; $_xml .="\t\t<file>" . $row["votrechamp"] . "</file>\r\n";$_xml .="\t</page>\r\n"; } else { $_xml .="\t<page title=\"" . $row["votrechamp"] . "\">\r\n";$_xml .="\t\t<para>". $row["votrechamp"] ." passe:". $row["pass"] ."</para>\r\n"; $_xml .="\t</page>\r\n"; } } $_xml .="</table>"; fwrite($file, $_xml); fclose($file); echo "Le fichier XML a etait créé  <a href=\"results.xml\">Show source :).</a>"; } else { echo "erreur"; } ?>
 

Commentaires et avis

signaler à un administrateur
Commentaire de pdl le 22/04/2004 08:26:57

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.

Tu peux certainement mieux faire.

signaler à un administrateur
Commentaire de pdl le 22/04/2004 08:54:56

Allez, pour être complet, je livre une version améliorée qui permet de mettre toutes les colonnes dans le fichier XML
[code]
if ($num != 0) {
$file= fopen("results.xml", "w");
$_xml ="&lt;?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?&gt;\r\n";
$_xml .="&lt;table&gt;\r\n";
while ($row = mysql_fetch_array($result)) {
$_xml .="\t&lt;row title=\"" . $row[0] . "\"&gt;\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&lt;$key&gt;" . $val . "&lt;/$key&gt;\r\n";
$i++;
}
$_xml .="\t&lt;/row&gt;\r\n";
} $_xml .="&lt;/table&gt;";
fwrite($file, $_xml);
fclose($file); echo "Le fichier XML a etait créé  &lt;a href=\"results.xml\"&gt;Show source :).&lt;/a&gt;";
} else {
echo "erreur";
}
[/code]

signaler à un administrateur
Commentaire de ceced le 22/04/2004 10:23:07

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

signaler à un administrateur
Commentaire de redisnotdead le 14/04/2005 18:01:48

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é

signaler à un administrateur
Commentaire de FRAJA le 28/06/2005 15:32:24

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 .="<table>\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 .="</table>";
fwrite($file, $_xml); fclose($file);
        echo "Le fichier XML a etait créé <a      href=\"results.xml\">Show source :).</a>";
}
else {
    echo "erreur";
}  
?>

Franck

signaler à un administrateur
Commentaire de sawinashi le 24/10/2005 03:20:46

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. :)

signaler à un administrateur
Commentaire de lir le 20/01/2006 14:52:14

sympat

signaler à un administrateur
Commentaire de lir le 20/01/2006 15:08:17

c'est possible deme dire les zones à changer par rapport à une base.
désolé je débute!

merci

signaler à un administrateur
Commentaire de sletis le 28/04/2006 16:51:22

génial ce code ;) bon travail!

signaler à un administrateur
Commentaire de sletis le 28/04/2006 16:51:39

génial ce code ;) bon travail!

signaler à un administrateur
Commentaire de ibompuis le 23/05/2008 08:22:53

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]);
  
            $_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éé <a href=\"results.xml\">Show source :).</a>";
}
else {
    echo "erreur";
}  
?>

le resulta :

<newsList>
<news>
<id>0</id>
</news>
<news>
<name>Public</name>
</news>
<news>
<id>1</id>
</news>
<news>
<name>Registered</name>
</news>
<news>
<id>2</id>
</news>
<news>
<name>Special</name>
</news>
</newsList>

Mon problème c'est que je voudrais plutot obtenir :

<newsList>
<news>
<id>0</id>
<name>Public</name>
</news>
<news>
<id>1</id>
<name>Registered</name>
</news>
<news>
<id>2</id>
<name>Special</name>
</news>
</newsList>

Une idéee comment procéder ?
Merci

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,156 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.