Pular para o conteúdo

Exportação para TXT com base em layout

Responder tópico
  • Denunciar
  • Indicar

1. Exportação para TXT com base em layout

Enviado em 08/02/2010 - 17:12h

Srs,
Estou com a ingrata missão de exportar uma base de firebird(argh) para txt.
Estou tentando da seguinte forma:

<?php

$conexao = ibase_connect("10.10.14.1:c:/gdb/banco.spi","SYSDBA","masterkey");
$sql = "select * from tbclientes";
$resultado = ibase_query($conexao, $sql);
$res = ibase_query($sql) or die ('problemas no SQL');
$num = ibase_num_fields($res);
while ($row = ibase_fetch_object($res)) {
$arq = fopen("clientes.txt", "w");
$branco = '';
$ponto = fseek($arq, 1, SEEK_CUR );
fwrite($arq, $branco);

$clcod=$row->CLCOD;
$ponto = fseek($arq, 2, SEEK_CUR );
fwrite($arq, $clcod);

$nome=$row->CLNOME;
$ponto = fseek($arq, 6, SEEK_CUR );
fwrite($arq, $nome);

$cltipo=$row->CLTIPO;
$ponto = fseek($arq, 46, SEEK_CUR );
if ($cltipo == 1) {
$cltipo = 'F';
}else{
$cltipo = 'J';
fwrite($arq, $cltipo);}

$datanasc='01/01/90';
$ponto = fseek($arq, 47, SEEK_CUR );
fwrite($arq, $datanasc);

$clpai=$row->Clpai;
$ponto = fseek($arq, 55, SEEK_CUR );
fwrite($arq, $clpai);

$clmae=$row->Clmae;
$clmae = $clmae."\n";
$ponto = fseek($arq, 95, SEEK_CUR );
fwrite($arq, $clmae);

fclose($arq);


}


?>



Só que tipo ele roda esse lopping e ao reabir o arquuivo ele sobrescreve linha por linha...
Precisava que ele “pulasse” pra linha de baixo...ficando cada registro de cliente em linha separada...
Alguém tem alguma idéia?

Responder tópico

2. \n

Enviado em 08/02/2010 - 21:28h

\n no final do script?!

Será que funcionaria?!

Att.

Leonardo Gomes Duarte

3. artigo no www.php.net

Enviado em 09/02/2010 - 09:33h

Veja esse artigo que com certeza responde a tua questão. Tem até exemplos práticos

http://php.net/manual/pt_BR/function.fopen.php

Ou é a opção w+ ou é a opção a+

Pode ser que encontre soluções mais fáceis

Precisando, estamos a disposição.

4. Re: Exportação para TXT com base em layout

Enviado em 10/02/2010 - 08:45h

Então Gomes, o \n já esta quando eu adiciono o campo clmae.
Porém quando o looping sobe denovo ele atraves do fopen ele abre o arquivo e seta a posição do ponteiro na 1 da primeira linha. Eu tinha que dar um jeito de ele cair pra linha de baixo.

5. altere seu codigo para usar fputs

Enviado em 10/02/2010 - 10:30h

como o exemplo abaixo:

$codigo = $aux["CODIGO"]."\r\n";
$pipe = "|";
$gravar = $pessoa.$cnpj_format.$name.$usual.$nat_endereco.$endereco.$data_cadastro_format.$codigo;
fputs($arquivo, "$gravar");

como o código é o ultimo campo, ele vai abrir uma nova linha assim que o valor de $codigo for inserido, e apenas a varaivel $codigo tem o parametro "\r\n".;)

O resto das variaveis fiz usando o str_pad. Exemplo:

$name = str_pad($aux["NOME"], 55, ' ');

Espero que tenha ajudado...

6. Re: Exportação para TXT com base em layout

Enviado em 10/02/2010 - 12:03h

Daystyler, na mosca, exatamente o que eu tava precisando. Eu não conhecia a função strpad e ela me salvou para deixar cada campo no tamanho certo.

Muito obrigado!!!

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder