Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Robertson Matos

XML x Mysql

Recommended Posts

Galera vai aqui um desafio pra vcs... andei pesquisando muito no google e não tem nenhum tópico sobre o assunto então é por que ninguém deve saber ou algo do tipo...Tô tentando jogar os dados de um arquivo xml num banco de dados...Usei o código a seguir... só que ele contém um bug...Quando o while é finalizado ele só mostra a última linha afetada com o while... Ele nem parece um while de verdade, hauhaha!o código é o seguinte:// arquivo.php<?$array = array();$chave = "";$info = "";//FUNÇÃO DA TAG INICIAL DO ARQUIVO XML (O QUE SERA MOSTRADO ANTES DOS DADOS DO XML)function FuncInicial($parser, $elemento ) { global $array;}// FUNÇÃO DA TAG FINAL DO ARQUIVO XML (O QUE SERA MOSTRADO DEPOIS DOS DADOS VINDOS DO XML)function FuncFinal($parser, $elemento) { global $array, $info; $chave = $elemento; $array[$chave] = $info; $info = ""; }//FUNÇÃO QUE MOSTRA OS DADOS DO XMLfunction FuncDados($parser, $dados ) { global $info; $info .= $dados;}//CRIA O ANALISADOR DO XML$parser = xml_parser_create();//PEGA O CABEÇALHO E RODAPÉ DO DOCUMENTO INFORMADOS NAS FUNÇÕES ACIMAxml_set_element_handler($parser, "FuncInicial", "FuncFinal");//PEGAR OS DADOS DO XMLxml_set_character_data_handler($parser, "FuncDados");//ABRE O XML$file = "tabelas.xml";$ponteiro = fopen($file, "r");// O PROBLEMA TÁ AQUI.... // ENQUANTO TIVER LENDO O ARQUIVO INCLUE O INSERT// NO LUGAR DO filesize($file) UTILIZANDO O NUMERO 1540 FICA QUASE PERFEITOwhile ($dados = fread($ponteiro, filesize($file))) { //INICIA A ANALISE DOS DADOS DO XML xml_parse($parser, $dados);//CRIA O LOOP PARA GERAR OS INSERT DO XML$sql= "INSERT INTO `MATERIAL` VALUES ('";$i=count($array);$h=0;/* O FOREACH varre uma dada matriz dada por expressao_array. Em cada 'loop', o valor do elemento corrente é atribuído a $valor e o ponteiro interno da matriz é avançado em uma posição */foreach( $array as $junta => $valor ) { $h++; $sql.= trim($valor); if($i>$h) $sql.= "', '"; if($i<=$h) $sql.= "')"; } echo $sql;}//LIBERA O ANALISADOR XMLxml_parser_free($parser);?>// O tabelas.xml<?xml version="1.0" encoding="ISO-8859-1" ?><TABELAS><REGISTRO><MATERIAL tipo ="varchar" tamanho="21">01</MATERIAL><CODIGOBARRAS tipo ="varchar" tamanho="41">01001</CODIGOBARRAS><DESCRICAO tipo ="varchar" tamanho="256">AREIA GROSSA</DESCRICAO></REGISTRO><REGISTRO><MATERIAL tipo ="varchar" tamanho="21">02</MATERIAL><CODIGOBARRAS tipo ="varchar" tamanho="41">02</CODIGOBARRAS><DESCRICAO tipo ="varchar" tamanho="256">BRITA</DESCRICAO></REGISTRO></TABELAS>Ajudem-me ... no google não tem nada explicando esse procedimento... Quem colocabora ficarei extremamente agradecido pelo resto da vida! heheServe sugestões (com exemplos em DOM ou qualquer outro método que nao seja esse):D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.