Ir para conteúdo

Arquivado

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

Andrey Knupp Vital

[Resolvido] Erro Na Hora De Gravar TXT

Recommended Posts

Galera , to com um problema aqui ..

to com um script pra pegar todos pedidos da base de dados e gravar num txt ...

so que so ta gravando a ultima coluna do banco qual o erro ..

ai vai o script

<?php
set_time_limit(0);
#######################################BAIXAR TODOS ###########################################################
if($_GET['baixar'] == "Baixar Todos Pedidos"){
@mysql_connect("localhost","root","");
@mysql_select_db("");

$result = mysql_query("select * from `pedidos`");
for ($i = 0; $i < mysql_num_fields($result); $i++) {
 $ab = mysql_field_name($result,$i);
   while($row = mysql_fetch_array($result)){
    $new_contents= ''.$ab.''.''.$row[$i].'';
 }
}


$file = 'dados.txt';
$fh = fopen($file, 'w+');
fwrite($fh, $new_contents);
fclose($fh);
$aquivoNome = 'dados.txt';
$arquivoLocal = $aquivoNome;
if (!file_exists($arquivoLocal)) {
exit;
}
$novoNome = $_GET[nome_arquivo].'.'.$_GET[tipo];
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="'.$novoNome.'"');
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($aquivoNome));
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Expires: 0');
readfile($aquivoNome);
}
?>

Vlws

Fewdox :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não está concatenando a variável $new_contents.

 

Faça assim:

 

$new_contents = '';

for ($i = 0; $i < mysql_num_fields($result); $i++) {
$ab = mysql_field_name($result,$i);
while($row = mysql_fetch_array($result)){
	$new_contents .= ''.$ab.''.''.$row[$i].'';
}
}

 

Um abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

.. estou selecionando o db sim , so nao pus ali ..

o que eu tenho que fazer

e gerar o txt

com

Nome do campo : Valor

ex

tabela teste

campo produto

valor do campo produto e 10

 

entao ele gera

 

produto : 10

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então dá pra melhorar esse código aí, se você está usando uma tabela específica e conhece os seus respectivos campos, não há a necessidade de usar mysql_field_name e mais de um loop.

 

$query = mysql_query('SELECT * from `pedidos`') or die(mysql_error());

$conteudo = '';

while ($row = mysql_fetch_object($query))
{
$conteudo .= 'Nome do campo 1: ' . $row->nome_do_campo_1 . PHP_EOL;
$conteudo .= 'Nome do campo 2: ' . $row->nome_do_campo_2 . PHP_EOL;
$conteudo .= 'Nome do campo 3: ' . $row->nome_do_campo_3 . PHP_EOL;
$conteudo .= PHP_EOL; // Quebra uma linha extra pra separar do próximo registro
}

mysql_free_result($query);

 

E na hora de salvar o arquivo use a função file_put_contents em vez de fopen, fica assim:

 

$arquivo = dirname(__FILE__) . '/dados.txt';
file_put_contents($arquivo, $conteudo);

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai e que ta o problema ... essa tabela muda todo dia , dai eu to usando loop pra capturar os nomes ..

se eu usar assim vou ter que mudar o script toda vez ..

 

vlw por ajudar

mais ainda continuo sem solucao :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples amigo, faça assim:

 

$query = mysql_query('SELECT * FROM `pedidos`') or die(mysql_error());

$conteudo = '';

while ($row = mysql_fetch_assoc($query))
{
foreach ($row as $key => $value)
{
	$conteudo .= $key . ': ' . $value . PHP_EOL;
}

$conteudo .= PHP_EOL; // Quebra uma linha extra pra separar do próximo registro
}

mysql_free_result($query);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.