Version complète: sur le forum Webmaster Hub : Intégration d'un flux dans Base De Donnée
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > XML et ses dialectes
Mully
Bonjour à tous,

je souhaite intégrer mon flux xml dans une base de donnée. Pour cela, j'ai crée une table nommée 'item' avec 11 champs (id en auto-increment, title, description, size, time, format, date, category, categoryname, thumbs et order).

Voici mon code pour alimenter depuis mon flux la base de donnée ( aucune erreur, aucun message n'est renvoyé ) :

CODE
<?php
mysql_connect("", "", "") or die("Impossible de se connecter");
mysql_select_db("") or die("pas possible de trouver la base");
mysql_query("TRUNCATE TABLE `item`");
$file = "l'adresse de mon flux";
if(isset($file)) {
$title = "";
$order = "";
$curtag = "";
/** fonction startElement, déclenchée lorsque le parseur rencontre une balise XML du type **/
function startElement($parser, $name, $attrs) {
global $curtag, $id, $title, $description, $size, $time, $format, $date, $category, $categoryname, $thumbs, $order ;
$curtag = $name;
if ($name == "ID") $id = "";
if ($name == "TITLE") $title = "";
if ($name == "DESCRIPTION") $description = "";
if ($name == "SIZE") $size = "";
if ($name == "TIME") $time = "";
if ($name == "FORMAT") $format = "";
if ($name == "DATE") $date = "";
if ($name == "CATEGORY") $category = "";
if ($name == "CATEGORYNAME") $categoryname = "";
if ($name == "THUMBS") $thumbs = "";
if ($name == "ORDER") $order = "";
}


/** fonction endElement, déclenchée lorsque le parseur rencontre une balise XML du type **/
function endElement($parser, $name) {
global $curtag, $id, $title, $description, $size, $time, $format, $date, $category, $categoryname, $thumbs, $order ;


$curtag = "";

if ($name == "ORDER") {
$title = addslashes ($title);
$description = addslashes ($description);
$size = addslashes($size);
$time = addslashes ($time);
$format = addslashes ($format);
$date = addslashes($date);
$category = addslashes($category);
$categoryname = addslashes($categoryname);
$thumbs = addslashes($thumbs);
$order = addslashes($order);

$query = "INSERT INTO item(id,title,description,size,time,format,date,category,categoryname,thumbs,ord
er) VALUES('".$id."','".$title."','".$description."','".$size."','".$time."','".$format."','".$date."','".$category."','".$categoryname."','".$thumbs."','".$order."')";
$result = mysql_query($query);
}
}

/** fonction characterData, déclenchée lorsque le parseur rencontre des caractères, à l'intérieur d'un noeud XML **/
function characterData($parser, $data) {
global $curtag, $id, $title, $description, $size, $time, $format, $date, $category, $categoryname, $thumbs, $order ;
if ($curtag == "ID")
$id .= $data;
if ($curtag == "TITLE")
$title .= $data;
if ($curtag == "DESCRIPTION")
$description .= $data;
if ($curtag == "SIZE")
$size .= $data;
if ($curtag == "TIME")
$time .= $data;
if ($curtag == "FORMAT")
$format .= $data;
if ($curtag == "DATE")
$date .= $data;
if ($curtag == "CATEGORY")
$category .= $data;
if ($curtag == "CATEGORYNAME")
$categoryname .= $data;
if ($curtag == "THUMBS")
$thumbs .= $data;
if ($curtag == "ORDER")
$order .= $data;
}

/** crée un nouveau parseur **/
$xml_parser = xml_parser_create();

xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);

/** enregistre les trois fonctions ci dessus **/
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($file, "r"))) {
die("Impossible d'ouvrir l'URL...");
}

while ($data = fread($fp, 50)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("erreur XML: %s à la ligne %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
mysql_close();

}
?>


Merci de votre aide car je suis en train de craquer fortement mad2.gif

smartass.gif
Mully
Bonjour à tous,

mon problème est résolu, les droits de lecture du fichier xml n'étaient pas ouverts ( chmod du fichier xml ).
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.