Vi prego aiutamenti perchè sto impazzendo
Io ho questo xml
codice:<?xml version="1.0" encoding="ISO-8859-1" ?> <rss version="2.0"> <item> <idscheda>1</idscheda> <titolo>Title of item</titolo> <author>Author name</author> <date>Date of article</date> <article>Content of an article</article> </item> <item> <idscheda>2</idscheda> <titolo>Title of item 2</titolo> <author>Author name</author> <date>Date of article 2</date> <article>Content of article 2</article> </item> </rss>
Vorrei prelevadere i dati idscheda e titolo e inserirli dentro una tabella.
per fare questo utilizzo questo script:
codice:<? require "../../_include/mysql_globe4.php"; $cc=999999; $url = "prova.xml"; //ELEMENTS TO RETRIEVE - YOU MUST KNOW THE TAG NAMES OF EACH ELEMENT - Can be improved using an array (next update): $idscheda=''; $titolo=''; $author=''; $date=''; $article=''; $link=''; //Counter to start counting the number of items $cz=0; $data = file_get_contents($url); $depth = array(); //The dataset will be stored inside this variable $txt=''; function startElement($parser, $name, $attrs) { //we use global variables to keep track of each element while parsing the whole document global $cc,$cz,$txt; global $depth; global $tagname; global $idscheda,$titolo,$author,$date,$article,$link; if($cz < $cc) { /* display only if we find all items to display - updated here*/ if(strlen(trim($titolo)) > 0 && strlen(trim($author)) > 0 && strlen(trim($date)) > 0) { //at this level we have a NEW ITEM -> we increment to items' counter if($cz++ >= 1) { /*We display the dataset in the order we wish (see below to apply a different design)*/ $txt.=$idscheda.$titolo.$author.$date.$article; $idscheda=''; $titolo=''; $author=''; $date=''; $article=''; } } $tagname=$name; } //one level deeper $depth[$parser]++; } function endElement($parser, $name) { global $depth; global $tagname; $tagname=''; $depth[$parser]--; } function characterData($parser, $ddata) { global $tagname; global $cc,$cz,$txt; global $idscheda,$titolo,$author,$date,$article,$link; if($cz < $cc) { switch($tagname) { case 'IDSCHEDA':if(strlen(trim($ddata)) > 0) $idscheda= $ddata;break; case 'TITOLO':if(strlen(trim($ddata)) > 0) $titolo= $ddata;break; default: break; } require "../../_include/mysql_globe4.php"; /*$db=mysql_connect($dbhost,$dbuser,$dbpw) or die ("Errore durante la connessione al database"); /* $sql="INSERT INTO xml_esempio (idscheda,titolo) VALUES ('$idscheda','$titolo')"; /*mysql_db_query("creativeglobe4",$sql,$db); */ echo "INSERT INTO xml_esempio (idscheda,titolo) VALUES ('$idscheda','$titolo')";; echo ' '; } } /*everything is triggered here - we parse the xml file and call the startElement & endElement functions, then the characterData function to read all content - the xml_parse line launches the procedure taking care of the arguments*/ $xml_parser = xml_parser_create(); xml_set_element_handler($xml_parser, "startElement", "endElement"); xml_set_character_data_handler($xml_parser, "characterData"); if (!xml_parse($xml_parser, $data)) 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); //We store the last elements $txt.=$idscheda.$titolo.$author.$date.$article;
Il problema è che mi inserisce gli idscheda senza problemi ma i titoli no.
Qualcuno mi sa dire dove può essere l'errore.
Non mi stampa alcune errore solo che i titoli proprio non me li inserisce.
Scusate la prolessità.
Grazie.

Rispondi quotando