Aller au contenu

Importer produit XML dans ma BDD via PHP


D_Phantom

Sujets conseillés

Bonjour,

J'ai l'habitude de parser des petit fichier en xml mais là j'ai besoin d'importer un gros fichier. J'ai découvert cette methode qui permet d'afficher facilement mais je ne parviens pas a inserer les données dans la base des données. Merci de votre aide si vous pouvez m'aider.

Mon objectif c'est d'arriver a faire executer cette commande pour chaque produit

$query="INSERT INTO `table_livres` ( `id_livre` , `nom_livre` , `description`) VALUES ('$id','$titre','$description')";
$result = mysql_query($query);

Mon problème, je ne sais pas où le placer dans le script ici en dessous qui affiche correctement les données.

Structure du fichier XML à importer

<item>
<id>1</id>
<titre>titre du livre numéro 1</titre>
<description>Ici la description résumé du livre titre numero 1</description>
</item>

Mon script php pour recuperer les données XML.

<?php

$file="http://www.site-externe.com/mon_fichier.xml";


function startElement($parser, $name, $attribs) {

global $titre, $id, $description;

if ('titre' == strtolower($name)) {$titre = true;}
if ('id' == strtolower($name)) {$id = true;}
if ('description' == strtolower($name)) {$description = true;}
}


function endElement($parser, $name) {

global $titre,$id,$description;

if ($id) {echo "<p>$id"; $id = false;}
if ($titre) {echo "$titre<br>"; $titre = false;}
if ($description) {echo "$description</p>"; $description = false;}
}


function characterData($parser, $data) {

global $titre,$id,$description;

if ($titre) {$titre = $data;}
if ($id) {$id = $data;}
if ($description) {$description = $data;}


}



$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");

if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser)));

}

}

xml_parser_free($xml_parser);

echo $texte1;
echo '. ';
echo $texte2;
?>

Voila j'espere que c'est claire, j'espere que j'obtiendrai de l'aide ici.

Merci a vous !

PS: Si quelqu'un a un script tout fait je suis preneur s'il arrive a appliquer ma structure dessus. Cette remarque c'est juste au cas où ;)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...