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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 20 182 fois - Téléchargée 26 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
-
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
-
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
-
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
-
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
-
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.