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
<?phpmysql_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