Problema ao importar arquivo txt para sql server
18/03/2015
0
Boa tarde pessoal!, estou importanto um arquivo txt para mssql, mas só está importando duas linhas das 4 contidas no arquivo, não consegui encontrar aonde está o problema. Segue código para quem quiser analisar e me ajudar.
<?php //conecta banco require '../bd/mssql.php'; // recebe dados arquivo //nome original do arquivo $arqNome = $_FILES['arquivoCadastro']['name']; //pegar extensao do arquivo $arqExt = strtolower(end(explode('.',$arqNome))); //tipo do arquivo $arqTipo = $_FILES['arquivoCadastro']['type']; //nome temporario armazenado no servidor $arqTemp = $_FILES['arquivoCadastro']['tmp_name']; //codigo de erro retornado $arqError = $_FILES['arquivoCadastro']['error']; //definir novo nome baseado na data e hora $arqNovoNome = time() . '.' . $arqExt; if($arqError === 0){ //pasta aonde arquivo vai ser salvo $pasta = '../imp/'; //move arquivo da pasta temporaria para a setada acima $upload = move_uploaded_file($arqTemp,$pasta . $arqNovoNome); if($upload === TRUE){ echo '<script type="text/javascript">window.alert("O Arquivo foi importado.");</script>'; }else{ echo '<script type="text/javascript">window.alert("Erro ao importar arquivo!!");</script>'; } }else{ echo $arqError; } //****************************************************************************** //****************************************************************************** //********************TRATAMENTO ARQUIVO IMPORTADO****************************** //indica o caminho do arquivo no servidor $arquivo = '../imp/'.$arqNovoNome; //cria um array que receberá os dados importados do arquivo txt $arquivoArr = array(); //aqui é enviado para função fopen o endereço do arquivo e a instrução 'r' que indica 'somente leitura' e coloca o ponteiro no começo do arquivo $arq = fopen($arquivo, 'r'); //variável armazena o total de linhas importadas $total_linhas_importadas = 0; //a função feof retorna true (verdadeiro) se o ponteiro estiver no fim do arquivo aberto //a negação do retorno de feof indicada pelo caracter "!" do lado esquerdo da função faz com //que o laço percorra todas as linhas do arquivo até fim do arquivo (eof - end of file) while(!feof($arq)){ //retorna a linha do ponteiro do arquivo $conteudo = fgets($arq); //transforma a linha do ponteiro em uma matriz de string, cada uma como substring de string formada a partir do caracter ';' $linha = explode(';', $conteudo); //array recebe as substring contidas na matriz carregada na variável $linha $arquivoArr[$total_linhas_importadas] = $linha; //incremente a variável que armazena o total de linhas importadas $total_linhas_importadas++; } ?> <!-- Codificação HTML --> <table class="table table-bordered table-condensed table-hover table-striped"> <thead> <tr> <th>Matricula</th> <th>Nome</th> <th>CPF</th> <th>Identidade</th> <th>Nascimento</th> <th>Endereço</th> <th>Bairro</th> <th>Cidade</th> <th>Sexo</th> <th>Telefone</th> <th>Status</th> </tr> </thead> <tbody> <?php //declaraçao matriz unset($cadastrosArr); $contLinha = 0; foreach($arquivoArr as $linha): $contColuna = 0; foreach($linha as $campo): //verifica se variavel tem valor if(strlen($campo) > 0){ //joga dados de cadastro para matriz $cadastrosArr[$contLinha][$contColuna] = $campo; }else{ $cadastrosArr[$contLinha][$contColuna] = $campo; //joga status como 1(Erro) $cadastrosArr[$contLinha][16] = 1; } $contColuna ++;//incrementa coluna endforeach; $contLinha ++;//incrementalinha endforeach; //implementaçao while para montar corpo da tabela //conectar banco require '../bd/mssql.php'; //zerando contadores //$contLinha = 0; $contColuna = 0; for($x=0;$x <$total_linhas_importadas;$x++){ echo '<tr>'; echo '<td>'.$x.'</td>'; echo '<td>'.$cadastrosArr[$x][4].'</td>';//matricula echo '<td>'.utf8_encode($cadastrosArr[$x][7]).'</td>';//nome echo '<td>'.$cadastrosArr[$x][5].'</td>';//cpf echo '<td>'.$cadastrosArr[$x][6].'</td>';//rg echo '<td>'.$cadastrosArr[$x][8].'</td>';//nascimento echo '<td>'.utf8_encode($cadastrosArr[$x][9]).'</td>';//endereco echo '<td>'.utf8_encode($cadastrosArr[$x][3]).'</td>';//bairro echo '<td>'.utf8_encode($cadastrosArr[$x][10]).'</td>';//cidade echo '<td>'.$cadastrosArr[$x][13].'</td>';//sexo echo '<td>'.$cadastrosArr[$x][15].'</td>';//telefone //echo '<td>'.$cadastrosArr[$contLinha][16].'</td>';//telefone //se mostrar erro mostra erro e não importa para banco if($cadastrosArr[$x][16] === 1){ echo '<td><span class="label label-important">Erro</span></td>'; }else{//se nao tiver erro entao importa para o banco echo '<td><span class="label label-success">OK</span></td>'; $sql = "INSERT INTO SRCLOGCADASTRO (BAIRRO,CIDADE,DATAHORA,DATANASC,ENDERECO,ESTADO,IDFUNC,NOME,OPERACAO,STATUS,RESULT,DATA,CGCEMPRESA,CPF,RG,CGCEMISSOR,MATRICULA,IDLINHA1,IDLINHA2,IDLINHA3,IDLINHA4,IDLINHA5,IDLINHA6,PERMISSAOSEG,PERMISSAOTER,PERMISSAOQUA,PERMISSAOQUI,PERMISSAOSEX,PERMISSAOSAB,PERMISSAODOM,PERMISSAOFER,PERMISSAOPICO,IDPERIODOSEM,IDPERIODOSAB,IDPERIODODOM,VIAGENSPER,VIAGENSSEM,VIAGENSMES,SEXO,TELEFONE,ESTCIVIL,CEP,CREDHABITUAIS,DATABLOQ,ASSINATURASRC) VALUES('".$cadastrosArr[$x][3]."','".$cadastrosArr[$x][10]."',GETDATE(),'".$cadastrosArr[$x][8]."','".$cadastrosArr[$x][9]."','".$cadastrosArr[$x][11]."','".$cadastrosArr[$x][4]."','".$cadastrosArr[$x][7]."',1,1,5,GETDATE(),'".$cadastrosArr[$x][0]."','".$cadastrosArr[$x][5]."','".$cadastrosArr[$x][6]."','".$cadastrosArr[$x][1]."','".$cadastrosArr[$x][4]."','','','','','','',1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,'".$cadastrosArr[$x][13]."','".$cadastrosArr[$x][15]."','".$cadastrosArr[$x][14]."','".$cadastrosArr[$x][12]."','".$cadastrosArr[$x][2]."','01/01/1980 00:00','".$cadastrosArr[$x][4]."')"; //executa sql mssql_query($sql,$conexao); } echo '</tr>'; } //fecha conexao mssql_close($conexao); ?> </tbody> </table> <?php //imprime a quantidade de linhas importadas echo "<br/> <b>Quantidade de Cadastros importados = ".$total_linhas_importadas."</b>";
Jonas Tomazelli
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)