Ir para conteúdo

POWERED BY:

Arquivado

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

Jonas Tomazelli

Problema ao importar txt para SQL Server, só importa duas linhas

Recommended Posts

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>---o</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>';//---o
                            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,PERMISSAO---,PERMISSAOSAB,PERMISSAODOM,PERMISSAOFER,PERMISSAOPICO,IDPERIODOSEM,IDPERIODOSAB,IDPERIODODOM,VIAGENSPER,VIAGENSSEM,VIAGENSMES,---O,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>";
        

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.