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

Jonas Tomazelli

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar