Ir ao conteúdo

txt para MySQL enviar linha apenas se começar com...


rodrigo rdg

Posts recomendados

Postado

Olá, ficaria muito grato se alguém pudesse me ajudar.

Possuo arquivos txt nesse padrão;

000000278125000000000000000 000008AB361730593BB000000

000000227125000000000000000 000008AB361730593BB000000

000000129125000000000000000 000008AB361730593BB000000

000000272125000000000000000 000008AB361730593BB000000

000000120125000000000000000 000008AB361730593BB000000

Uso esse codigo para enviar os dados que preciso para o banco de dados MySQL;


while (!feof($lendo)){
$i++;
$linha = fgets($lendo,9999);

$numero = trim(substr($linha,7,5)). "000";
$registro = trim(substr($linha,44,13));

//$linha = explode("|", $linha);
if(strlen($linha) > '1'){
$insere = "INSERT INTO enumero (numero, registro) VALUES ('$numero', '$registro')";
mysql_query($insere) or die('ERRO NA CONSULTA. <br><br> CONSULTA ENVIADA = '.$insere.'<br><br>ERRO DO MYSQL = '.mysql_error());
}
}

echo "<script>alert('Retorno Importado com Sucesso!');top.location.href='index.php';</script>";

fclose($lendo);
$i = 0;

Teria alguma maneira “milagrosa” de só acrescentar os dados no banco se o caractere 7 começar com 2 ?

Desde já, obrigado!

Postado

Olá, não entendo de PHP (é PHP isso né? ^^), mas creio que precisaria do ajuste abaixo..

$i = 0;
while (!feof($lendo)){
$i++;
$linha = fgets($lendo,9999);

[B]$teste = trim(substr($linha,7,1));

IF $teste != "2"
RETURN
ENDIF [/B]

$numero = trim(substr($linha,7,5)). "000";
$registro = trim(substr($linha,44,13));

//$linha = explode("|", $linha);
if(strlen($linha) > '1'){
$insere = "INSERT INTO enumero (numero, registro) VALUES ('$numero', '$registro')";
mysql_query($insere) or die('ERRO NA CONSULTA. <br><br> CONSULTA ENVIADA = '.$insere.'<br><br>ERRO DO MYSQL = '.mysql_error());
}
}

echo "<script>alert('Retorno Importado com Sucesso!');top.location.href='index.php';</script>";

fclose($lendo);

Postado

Erciley, obrigado pela ajuda.

É php sim! obs.: e eu estou inciando...

Fiz o ajuste que você falou mas ele me retornou o seguinte erro;

Parse error: parse error, unexpected T_RETURN in c:\arquivos de programas\apache group\Apache\htdocs\cartao_talao\recebe_upload2.php on line 74

Linha onde esta o return

endif

Sabe o que pode ser?

Postado

É que "isso", coloquei de exemplo de como você deve fazer, mas não sei a sintaxe correta em PHP, nada que o poderoso Google não me responda, vamos ver ^^...

achei ^^

troque meu IF, por este aqui, é para funcionar ^^

if ($teste != "2") {

return null;

}

caso não funcione, o DIF daqui a pouco mostra como fazer um RETURN em PHP, manjo nada, hehee

  • Moderador
Postado

Olá amigo,

Não testei o código mas, veja se é isto que você quer fazer;


<?php

[COLOR="Red"]$arquivo = fopen("reg.txt", "r");[/COLOR]

while (!feof($arquivo)){

$linha = fgets($arquivo);

$numero = trim(substr($linha,7,5)). "000";
$registro = trim(substr($linha,44,13));

[COLOR="Red"]$setimoCaractere = trim(substr($linha,7, 1)); [/COLOR]

include 'conn.php';

if(strlen($linha) > 1){
[COLOR="Red"]if ($setimoCaractere == 2){[/COLOR]
$insere = mysql_query("INSERT INTO enumero(numero,registro) VALUES('$numero','$registro')");
if($insere){
echo "<script>alert('Retorno Importado com Sucesso!');top.location.href='index.php';</script>";
}else{
echo "erro";
}
[COLOR="Red"]}[/COLOR]
}
}
?>

Veja que destaquei em vermermelho. onde o arquivo é aberto, a variavel que armazena o sétimo caractere para ser verificado.

veja o bloco de IF verificando se o sétimo caractere é igual a 2, caso seja ele executa o insert no banco.. senao apresenta a mensagem de "erro", esta mensagem de erro é apenas simbólica, podes colocar qualquer mensagema li.

abraço

Postado

Amigos, após muita briga rsrs consegui... (graças a ajuda de vocês) obrigado!

O codigo ficou assim;

$i = 0;
while (!feof($lendo)){
$i++;
$linha = fgets($lendo,9999);

$setimoCaractere = trim(substr($linha,7, 1));

$numero = trim(substr($linha,7,5)). "000";
$registro = trim(substr($linha,49,13));


//$linha = explode("|", $linha);
if(strlen($linha) > 1){
if ($setimoCaractere == 2){
$insere = mysql_query("INSERT INTO enumero(numero,registro) VALUES('$numero','$registro')");
if($insere){
echo "<script>alert('Retorno Importado com Sucesso!');top.location.href='index.php';</script>";
}else{
echo "falha ao carregar o arquivo";
}
}
}
}
?>

Abraços!!!

  • Moderador
Postado

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...