Ir para conteúdo
Fórum Script Brasil

Johnny1965

Membros
  • Total de itens

    3
  • Registro em

  • Última visita

Posts postados por Johnny1965

  1. Carrissimos,

    Passo um array para inserir os dados no mysql com o código abaixo, resumidamente:

    $sql_ = "INSERT IGNORE INTO " . $this->table_name . " (inscricao , nome_razao_social , pais_sgl , uf) VALUES ";
    
    dentro do Foreach eu capturo os dados com: $sql .= " ('{$inscricao}', '{$nome_razao_social}', '{$pais_sgl}', '{$uf}'),";


    Até aqui, tudo funciona correto. Se o array tiver no maximo 30 inserts, o script popula a tabela, mas se tiver 31 ou mais, não envia.
    O que pode ser? Existe alguma limitação?
    Meu array pode ter mais de 5mil registros.
    Se tem essa limitação, terei de dividir os inserts em nr de 30?

  2. Minha estrutura do arquivo TXT, é esta:
    Preciso ler, linha alinha e agrupar pelo (Cd), que é o único indice de cada registro. Assim, esse (Cd) refere-se a cada novo registro, podendo conter sub indices diversos - (11), (22), (Co), etc. Estes sub indices podem conter uma linha adicional (ver exemplo do (Co), no primeiro registro, que deve concatenar as linhas contendo "para gabinete" e "para armario.").
     
    inventario.txt
    //inicio
    No 0012 de 31/01/2016
    No 0012 de 31/01/2016
    (Cd) 12345
    (11) Cod1-023
    (22) 22/12/1945
    (Co) travamento de portas
    para gabinete
    para armario.
    (Cd) 23456
    (11) Cod1-055
    (21) 01/01/2005
    (22) gaveteiro
    ferro
    ,madeira
    ,aluminio
    (Cd) 78920
    (22) Cod1-077
    (54) 22/02/1975
    (Co) clipe
    aluminio ou ferro
    (74) anodizado
    (Cd) 0002525
    (Di) Cod4-07100
    (11) 22/02/2017
    (22) camisa
    vermelha
    verde
    (54) botoes amarelos
    (Co) manga
    ,abacate
    ,cereja
     
    //fim
    Implementei a rotina a seguir mas, após muita pesquisa e modificações, não consegui agrupar os sub indices:
    Juntamente , necessito de uma rotina para transferir os dados do array para variaveis e, posteriormente, para o BD do mysql.

    Se alguém puder me dar uma luz, agradeço.

    <?php
    
    
    $cd =  [];
    $grupo = [];
    
    $contador = 0;
    
    $arquivo = fopen('inventario.txt', 'r');
         while (!feof($arquivo)) {
             $linha = trim(fgets($arquivo, 1024));
    
             //$linha = trim($linha); 
    
             if (substr($linha, 0, 4) == '(Cd)') { 
                 $contador = 0;
                 if (!empty($grupo)) {
                     $cd[$id] = $grupo;
                     $grupo = [];
                     $contador = 0;
                 }
    
                 $id = substr($linha, 5, strlen($linha)-5 ); 
                 $cd[$id][] = $linha;
             } else { 
              
                    if (substr($linha, 0, 4) !== '(11)') {     
                         if (isset($grupo[$contador-1])) {
                               $grupo[$contador -1] .= ' ' . $linha;   
                               $contador--;
                          } 
                    } else {
                        $grupo[] = $linha;
                    }
                 $contador++;
             
             }
    
    
         }
    
    $cd[$id] = $grupo;
    
    fclose($arquivo);
    
    echo '<pre>';
    print_r($cd); exit;
    
    //-------------------------
    //Rotina para transferir os dados do array para variaveis
    $keys = array_keys($cd);
    for($i = 0; $i < count($cd); $i++) {
        echo $keys[$i] . "<br>";
        foreach($cd[$keys[$i]] as $key => $value) {
            echo $key . " : " . $value . "<br>";
        }
        echo "<br>";
    }

     

×
×
  • Criar Novo...