Marcio_123 1 Denunciar post Postado Maio 6, 2017 E ai galera blz, Estou usando esse arquivo para importar um determinado XML para o banco de dados, tudo certinho se alguem precisar. <?php include "config.php"; ini_set('default_charset', 'UTF-8'); /* PEGA O ARQUIVO XML */ if (isset($_POST['enviar_xml'])) { if (is_uploaded_file($_FILES['upl']['tmp_name'])) { $xml = simplexml_load_file($_FILES['upl']['tmp_name']); /* Lê o arquivo XML e recebe um objeto com as informações */ } } /* GRAVA O XML NO BANCO DE DADOS */ $x = 0; foreach ($xml as $contato){ mysql_query("INSERT INTO nome_tabela (data_importacao, nome, email, idade, cidade, situacao, valor) VALUES ('$contato->data_importacao', '$contato->nome', '$contato->email', '$contato->idade', '$contato->cidade', '$contato->situacao', '$contato->valor')"); if(mysql_affected_rows() != -1){ $x++; } } echo "Foram importados $x registros!"; ?> So estou com uma questão no primeiro campo da tabela data_importacao, para evitar que o arquivo seja importado 2x, como poderia no script acima colocar um ALERTA EX. o arquivo já foi importado nessa data, OU SEJA; se eu fiz a importação hoje, 06/05/2017 gostaria de colocar esse alerta pra evitar que o arquivo seja importado novamente. Meu XML abaixo. <?xml version="1.0" encoding="iso-8859-1"?> <Newsletter> <Contato> <data_importacao>06/05/2017</data_importacao> <nome>Ana Lima da Costa</nome> <email>ana@dominio.com</email> <idade>15 anos</idade> <cidade>Iguatu</cidade> <situacao>ativo</situacao> <valor>750,00</valor> </Contato> </Newsletter> Compartilhar este post Link para o post Compartilhar em outros sites
marsolim 110 Denunciar post Postado Maio 6, 2017 não seria só fazer uma consulta pela data antes where data='$data'? if(mysql_num_rows($sql) > 0){ echo "bagaceira já cadastrada hoje, volte amanhã!"; }else{ // tá liberado, aleluia, prossiga! } Compartilhar este post Link para o post Compartilhar em outros sites
Marcio_123 1 Denunciar post Postado Maio 6, 2017 A logica seria essa pegar pela DATA, caso eu ja tenha efetuado a importação pela manha, e vier a esquecer e tentar enviar a tarde como a data ja esta no BANDO ele me daria a mensagem. Compartilhar este post Link para o post Compartilhar em outros sites
marsolim 110 Denunciar post Postado Maio 6, 2017 e qual a dúvida exatamente? já tem algo tentado? da mesma forma que fez um INSERT, só precisa fazer um SELECT buscando a data atual e testar se o retorno é maior que zero. no comentário anterior já passei o início da coisa Compartilhar este post Link para o post Compartilhar em outros sites
Marcio_123 1 Denunciar post Postado Maio 7, 2017 marsolim eu fiz assim o codigo, mas continua gravando mesmo ja havendo importação na mesma data ini_set('default_charset', 'UTF-8'); /* PEGA O ARQUIVO XML */ if (isset($_POST['enviar_xml'])) { if (is_uploaded_file($_FILES['upl']['tmp_name'])) { $xml = simplexml_load_file($_FILES['upl']['tmp_name']); /* Lê o arquivo XML e recebe um objeto com as informações */ } } /* SE JA EXISTE IMPORTAÇÃO NESSA DATA NÃO GRAVA */ $data = date("d/m/Y"); $sql = mysql_query("SELECT * FROM nome_tabela WHERE data = '$data' "); if(mysql_num_rows($sql) == 1){ echo "O arquivo já foi importado hoje, volte amanha!"; }else{ /* FAZ A GRAVAÇÃO DO XML NO BANCO */ $x = 0; foreach ($xml as $contato){ mysql_query("INSERT INTO nome_tabela (data, nome, email, idade, cidade, situacao, valor) VALUES ('$contato->data', '$contato->nome', '$contato->email', '$contato->idade', '$contato->cidade', '$contato->situacao', '$contato->valor')"); if(mysql_affected_rows() != -1){ $x++; } } /* MENSAGEM */ $mgs = "<b>$palavra</b> Inserido com Sucesso. Foram importados $x registros!"; echo "<table border='0' align='center' cellpadding='0' cellspacing='0' style='border: 1px solid $corcelula1;'> <tr> <td width='400' bgcolor='$corcelula2' align='center' class='titulos'> $mgs</td> </tr> </table> <br> "; } } Compartilhar este post Link para o post Compartilhar em outros sites
marsolim 110 Denunciar post Postado Maio 7, 2017 o nome da tabela é nome_tabela mesmo? o formato da data no banco é d/m/Y? normalmente é Y-m-d talvez tenha que mudar isso aí e outra que tá faltando informar timezone e locale que não é fundamental mas pra trabalhar corretamente com data e hora precisa informar header ("Content-type: text/html; charset=UTF-8"); date_default_timezone_set("America/Sao_Paulo"); setlocale(LC_ALL, 'Portuguese_Brazil.1252'); // ou setlocale(LC_ALL, 'pt_BR.utf-8') isso aqui depende do servidor; Compartilhar este post Link para o post Compartilhar em outros sites
Marcio_123 1 Denunciar post Postado Maio 7, 2017 o campo no BANCO e do tipo VARCHAR. Compartilhar este post Link para o post Compartilhar em outros sites
Marcio_123 1 Denunciar post Postado Maio 8, 2017 Deu tudo certo marsolim o que acontece agora é que antes o xml era um arquivo pequeno 10 linhas estava testando, agora é pra valer, tem mais de 50 linhas e não esta lendo. Mas quem precisar ler xml pequeno pode pegar o script acima esta 100% Essa ai é uma linha, mas são varias. <?xml version="1.0" encoding="utf-8"?> <_Despesa xmlns="http://tempuri.org/"> <usuario> <Login>ws_448</Login> <Senha>ws_448_692</Senha> </usuario> <acao>Inserir</acao> <listDespesa> <Despesa> <co_despesa>3</co_despesa> <dt_referencia>2017-05-04</dt_referencia> <de_orgao>fabrica</de_orgao> <tp_despesa>VALOR PAGO - ORDINARIO</tp_despesa> <nu_empenho>1874</nu_empenho> <id_despesa>000000000002500</id_despesa> <de_despesa>FOLHA PAGAMENTO DA FABRICA</de_despesa> <dt_emissao>2017-05-04</dt_emissao> <vl_despesa>13.947,47</vl_despesa> <de_funcaoGoverno>Administracao</de_funcaoGoverno> <de_subfuncaoGoverno>Administracao Geral</de_subfuncaoGoverno> <co_programa>1</co_programa> <de_programa>GESTAO ADMINISTRATIVA</de_programa> <co_acao>2001</co_acao> <de_acao>OUTROS/NAO APLICAVEL</de_acao> <de_fonteRecurso>FUNDO</de_fonteRecurso> <de_aplicacaoFixa>GERAL</de_aplicacaoFixa> <de_modalidadeLic>OUTROS/NAO APLICAVEL</de_modalidadeLic> <de_elemento>VENCIMENTOS E SALARIOS</de_elemento> <hi_despesa>, FOLHA DE PAGAMENTO REFERENCIA 04/2017</hi_despesa> </Despesa> </listDespesa> </_Despesa> Compartilhar este post Link para o post Compartilhar em outros sites