Johnny1965
-
Total de itens
3 -
Registro em
-
Última visita
Posts postados por Johnny1965
-
-
Alguém pode me dar uma "Luz" pro meu problema?
-
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>"; }
Inserindo dados em lotes no mysql com php
em Tutoriais & Dicas - PHP
Postado
Carrissimos,
Passo um array para inserir os dados no mysql com o código abaixo, resumidamente:
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?