Exportação para TXT com base em layout

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

Roberto Fonseca
robertofonseca

(usa Suse)

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?



  


2. \n

Leonardo Gomes Duarte
lgomesd

(usa Suse)

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

Paulo
henbran

(usa Debian)

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

Roberto Fonseca
robertofonseca

(usa Suse)

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

Davi Ribeiro
dastyler

(usa Fedora)

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

Roberto Fonseca
robertofonseca

(usa Suse)

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!!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts