Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

andrepcg

exportar rows para ficheiros txt

Mensagens Recomendadas

andrepcg

queria criar um script que fizesse query à BD e que transportasse os resultados obtidos para um novo ficheiro txt, uma row por linha.

vai correr um cronjob ao final de cada dia e perante o dia do ano (03.04.2010) iria criar um ficheiro txt com o nome 03042010.txt e iria inserir os resultados dessa query para o ficheiro.

atenção que cada query retorna muitas rows para um txt.

alguem me consegue ajudar? estou com mais dificuldades na parte de fazer a query e transportar os resultados para o txt. obrigado malta

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
andrepcg

nao, nao tenho. nao sei a melhor maneira de fazer isto... cada query retorna mais de 1000 rows e tenho de as transportar para um txt diferente todos os dias com a data do dia.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
andrepcg

entao faço um select e depois uso while para cada row da tabela e entao uso o file_put_contents dentro do while, certo?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
andrepcg

$today_date = date('d.m.Y');

$queryi = mysql_query("SELECT * FROM blablabla") or die(mysql_error());

$file = "$today_date.txt";

while($row = mysql_fetch_array($queryi))
{
$put = "".$row['blabla']."\n";
file_put_contents($file, $put);


}

o codigo está a criar um ficheiro com apenas a ultima linha do select. se fizer um echo dentro do while, ele escreve todos os reultados da query na pagina mas só o ultimo da query é que é escrito no ficheiro. o que se passa?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
scorch

Tenta assim:

$today_date = date('d.m.Y');

$queryi = mysql_query("SELECT * FROM blablabla") or die(mysql_error());

$file = "$today_date.txt";

while($row = mysql_fetch_array($queryi))
{
        $put .= "".$row['blabla']."\n";   
       
}
file_put_contents($file, $put);


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
scorch

Faz um echo à variável $put antes da função file_put_contents, mas depois do ciclo.


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
andrepcg

fazendo echo a variavel $put, fora do ciclo, retorna o ultimo valor da query, o mesmo que está a ser guardado no ficheiro.

se fizer echo a variavel $put dentro do ciclo, retorna todos os valores da query, como seria de esperar.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
scorch

Sinceramente não percebo. Mas tenta de outra forma:

$today_date = date('d.m.Y');

$queryi = mysql_query("SELECT * FROM blablabla") or die(mysql_error());

$file = "$today_date.txt";

while($row = mysql_fetch_array($queryi))
{
        $put = $put."".$row['blabla']."\n";  
       
}
file_put_contents($file, $put);


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
andrepcg

guess what? it worked yoda.

obrigado a todos pela vossa colaboração

agora para ficar a perceber bem o que aconteceu, porque é que definir o $put fora do ciclo fez isto resultar?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
softklin

Tem a ver com o chamado escopo de variáveis. Uma variável definida num ciclo apenas funciona dentro dele, nalgumas linguagens. Surpreendentemente, no PHP também funciona nessa forma, fiquei a descobrir isso neste tópico. Fico espantado com isso devido à ausência de declaração de variáveis.

O primeiro código que tinhas, andrecpg, só falhou porque a função file_put_contents apaga todo o conteudo do fichiero antes de o escrever. Se usasses, por exemplo, fwrite, ou o file_put_contents com a opção FILE_APPEND (ver manual), já funcionaria.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
scorch

softclean, isso funcionaria, mas o script ficaria mais lento de estar sempre a abrir conexão, editar o ficheiro, e fechar a conexão, quando tudo isso poderia ser feito de uma vez só. ;)


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.