Senhores, consigo realizar o upload do conteúdo de um arquivo XML para o banco de dados MySQL. Mas apenas um arquivo por vez.
O que eu queria é que fossem vários arquivos. Já tentei criar array, variáveis... mas ainda não consegui. Consegui criar os scripts abaixo:
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form action="importar_xml.php" method="POST" enctype="multipart/form-data">
<input type="file" name="upl" multiple style="font-size:80px" />
<input type="submit" name="enviar_xml" value="Enviar" />
</form>
</body>
</html>
xml_importar.php
<?php set_time_limit(3600); //1 hora pra dar timeout
/* Conectar com o banco de dados da aplicação */
mysql_connect('localhost', 'root', 'senha') or die('Erro ao conectar');
mysql_select_db("nome_banco");
//****************************************************************************
ini_set('default_charset', 'UTF-8');
if (isset($_POST['enviar_xml'])) {
if (is_uploaded_file($_FILES['upl']['tmp_name'])) {
/**A linha abaixo mostra o nome do aquivo que foi selecionado**/
echo "<h1>" . "Arquivo XML: ". $_FILES['upl']['name'] ." Selecionado com Sucesso!." . "</h1>";
echo "<h2>Exibindo Fichas:</h2>";
/** LER XML A PARTIR DO INPUT TYPE=FILE
* Esta linha simplexml_load_files ler o xml que é selecionado
* a partir do campo do input type=file, que tem o nome de filename. **/
$xml = simplexml_load_file($_FILES['upl']['tmp_name']); /* Lê o arquivo XML e recebe um objeto com as informações */
}}
$x = 0; //contador
foreach ($xml->tag1->tag2->tag3->{'nome-nome2'} as $valor){
/* Percorre o objeto e salva as informações no banco de dados */
mysql_query("INSERT INTO nome_tabela(tag1, tag2, tag3, tag4, tag5)
VALUES (
".$valor->tag5->tag6.",
'".$valor->tag7->tag8."',
".$valor->tag9->tag10->tag11->tag12.",
'".$valor->tag9->tag10->tag11->tag13."',
".$valor->tag9->tag10->tag11->tag14.")");
if(mysql_affected_rows() != -1){
$x++;
} }
echo "$x contatos importados com sucesso!";
?>
//****************************************************************************************************************************************
O que preciso é selecionar vários XMLs e salvar no banco. Hoje, consigo, sim, selecionar vários, mas somente 1(um) XML é gravado no banco.
Senhores, se puderem, dá uma ajudinha ae...
abç!