Generer a la voler un fichier xml via une table sql + php

4/5 (11 avis)

Snippet vu 20 650 fois - Téléchargée 28 fois

Contenu du snippet

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 / Exemple :


<?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"; } ?>

A voir également

Ajouter un commentaire Commentaires
ibompuis Messages postés 5 Date d'inscription dimanche 28 avril 2002 Statut Membre Dernière intervention 23 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]);

$_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
sletis Messages postés 11 Date d'inscription dimanche 13 février 2005 Statut Membre Dernière intervention 29 mai 2005
28 avril 2006 à 16:51
génial ce code ;) bon travail!
sletis Messages postés 11 Date d'inscription dimanche 13 février 2005 Statut Membre Dernière intervention 29 mai 2005
28 avril 2006 à 16:51
génial ce code ;) bon travail!
cs_lir Messages postés 28 Date d'inscription dimanche 19 janvier 2003 Statut Membre Dernière intervention 26 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és 28 Date d'inscription dimanche 19 janvier 2003 Statut Membre Dernière intervention 26 mars 2008
20 janv. 2006 à 14:52
sympat

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.