Gerar Arquivo Csv Ou Txt C/ Conteúdo De Uma Tabela
#1
Posted 16/11/2004, 10:14
Bem, estou tentando desenvolver uma solução em php que gere um arquivo
com extensão txt ou csv dos registros existentes em uma determinada tabela apos uma consulta a uma tabela do meu banco.
Exemplo :
Na tabela usuário, tenho os seguinte campos eles estão presos a um vendedor :
cartao | nome | telefone | vendedor
12345 Carlos C 3208-8897 Marcos
12346 Joaquim 3208-8897 Marcos
12355 Jurene L 3208-8897 Marcos
12388 Josefa J 3208-8897 Marcos
12897 Maria C 3208-8897 Marcos
98789 Jones 5897-8888 Tales
Então, a ideia e fazer uma consulta por vendedor (mostrando ou não o resultado)
e "gerar um arquivo com extensão txt ou csv"
Exemplo de uma linha a ser gravada no arquivo :
'12345';'Carlos C';'3208-8897';'Marcos';
'12346';'Joaquim';'3208-8897';'Marcos';
Objetivo e liberar esses dados para um determinado software poder importar
Então, fazer a consulta e mostrar e tranquilo, gostaria de ter uma opção de mandar gravar em um arquivo com extensao csv ou txt esses registros que vieram
Obrigado de ante mão
.................................................................
Anuncie grátis
.................................................................
#2
Posted 16/11/2004, 13:14
2º Você poderia procurar no fórum que exitem muitos tópicos a respeito ...
Como esse que 'ensino' a mecher com arquivos de texto:
http://forum.wmonlin...showtopic=84135
Isso não é uma critica nem nada, nem sou dono do site ou moderador do fórum so estou repassado o que estão na regras para que não haja desentedimentos futuros ...
Mas de qualquer forma é simples ...
PHP |
<?php // Pega os Dados de seu Banco (No exmplo uso MySQL www.mysql.org) $sql_sales = mysql_query("SELECT * FROM vendedores;"); // Cria uma Varaivel e Lista $arquivo_text = ''; while ($datas = mysql_fetch_array($sql_sales)) { $arquivo_text = "'$datas[cartao]';'$datas[nome]';'$datas[telefone]';'$datas[vendedor]'; "; } $exte = (isset($cvs)) ? '.cvs' : '.txt'; $abbre = fopen(time().$exte, "w+"); fwrite($abbre, $arquivo_text); fclose($abbre); echo "arquyivo Criado"; ?> |
#3
Posted 16/11/2004, 14:03
Legal deu certo.
só que somente adicionou um registro ao arquivo.
Que no caso foi o ultimo
Como eu altero para adicionar todos, abaixo o meu script completo
<?php include "config.php"; $db = mysql_connect ($host, $user, $pass); //conectamos ao mysql $basedados = mysql_select_db($base); //selecionamos o database escolhido // Pega os Dados de seu Banco (No exmplo uso MySQL www.mysql.org) $sql_sales = mysql_query("SELECT * FROM nomedatabela;"); // Cria uma Varaivel e Lista $arquivo_text = ' '; while ($datas = mysql_fetch_array($sql_sales)) { $arquivo_text = "'$datas[id]';'$datas[senha]';'$datas[nomeprofissional]';'$datas[orgao]';'$datas[cargo]'; "; } $exte = (isset($cvs)) ? '.cvs' : '.txt'; $abbre = fopen(Nomedesejadoparaarquivo.$exte, "w+"); fwrite($abbre, $arquivo_text); fclose($abbre); echo "Arquivo Criado"; ?>
Ah !
Obrigado por ter mudando o post de local
Edição feita por: hugo, 16/11/2004, 15:12.
.................................................................
Anuncie grátis
.................................................................
#4
Posted 17/11/2004, 14:08
Mas ae ta o codigo consertado ....
eu coloquei "=" mas era ".="
PHP |
nclude("config.php"); $db = mysql_connect($host, $user, $pass); //conectamos ao mysql $basedados = mysql_select_db($base); //selecionamos o database escolhido // Pega os Dados de seu Banco (No exmplo uso MySQL www.mysql.org) $sql_sales = mysql_query("SELECT * FROM nomedatabela;"); // Cria uma Varaivel e Lista $arquivo_text = ''; while ($datas = mysql_fetch_array($sql_sales)) { $arquivo_text .= "'$datas[id]';'$datas[senha]';'$datas[nomeprofissional]';'$datas[orgao]';'$datas[cargo]'; "; } $exte = (isset($cvs)) ? '.cvs' : '.txt'; $abbre = fopen(Nomedesejadoparaarquivo.$exte, "w+"); fwrite($abbre, $arquivo_text); fclose($abbre); echo "Arquivo Criado"; ?> |
#5
Posted 17/11/2004, 19:05
puts, show de bola, agora só falta eu fazer zipar a parada e forçar um download pro usuário e entregar pro progromador do software.
Antes, vou fazer uma pesquisa (busca no forum), caso vc saiba e puder completar a ajuda, ficarei muito agradecido.
Abraços
.................................................................
Anuncie grátis
.................................................................
#6
Posted 19/11/2004, 20:59
Dei uma implementada no script acho que ficou bem legal (ele vai abaixo pra vc ver.) mas na verdade vou fazer varias consultas no mesmo arquivo PHP e cada uma delas criar determinados arquivos TXT.
Agora eu tenho um problema, gostaria de ver se consigo a sua ajuda ou de nossos amigos. Preciso pegar esses txts que foram gerados e zipar e forçar um download, porem o zip deve ter senha, para assegurar que somente o software que vai abrir e importar o conteudo faça.
O codigo que gera o txt implementado é esse :
<?
include("config.php");
$db = mysql_connect($host, $user, $pass); //conectamos ao mysql
$basedados = mysql_select_db($base); //selecionamos o database escolhido
// Pega os Dados de seu Banco (No exmplo uso MySQL www.mysql.org)
$sql_sales = mysql_query("SELECT * FROM autoridade;");
// Cria uma Varaivel e Lista
$arquivo = 'arquivo';
while ($datas = mysql_fetch_array($sql_sales)) {
$arquivo_text .= "'$datas[id]';'$datas[senha]';'$datas[nomeprofissional]';'$datas[orgao]';'$datas[cargo]';'$datas[setor]';'$datas[posicao]';
";
}
$exte = (isset($cvs)) ? '.cvs' : '.txt';
$abbre = fopen(arquivo.$exte, "w+");
fwrite($abbre, $arquivo_text);
fclose($abbre);
echo "<center>Arquivo Criado <br>
<a href='$arquivo.txt'>Fazer donwload </a><br>
Registros encontrados total de $contagem
</center>";
?>
Caso vc tenha alguma dica posta ae por favor
Obrigado
.................................................................
Anuncie grátis
.................................................................
#7
Posted 26/11/2004, 11:19
Já resolvi a questão de pegar todos os txt´s e colocar em um zip
Quem precisar de ajuda pra fazer isso outra hora diz ae.
Agora é o seguinte, observe :
$arquivo_text .= "'$datas[id]';'$datas[senha]';'$datas[nomeprofissional]';'$datas[orgao]';'$datas[cargo]';'$datas[setor]';'$datas[posicao]';
";
se eu colocar \n para pular linha quando criar o txt no final observe na pratica $datas[posicao]\n';
O txt fica blz com linhas puladas e etc , para zipar uso uma classe que faz uso do zip.lib.php , daí o salto de linha no txt que foi para dentro do zip passa a ser um quadradinho.
Quando o software(delphi) que recebe este txt vai ler para realizar os inserts não se acha com esse quadradinho
Alguem já resolveu isso ou tem alguma dica ????
Preciso trocar esse \n por uma coisa que seja comum aos dois caras
Obrigado por hora
.................................................................
Anuncie grátis
.................................................................
#8
Posted 02/03/2005, 15:02
Diz ae cara.... como vc conseguiu disponibilizar o arquivo em .zip?Olá pra todos !
Já resolvi a questão de pegar todos os txt´s e colocar em um zip
Quem precisar de ajuda pra fazer isso outra hora diz ae.
Agora é o seguinte, observe :
$arquivo_text .= "'$datas[id]';'$datas[senha]';'$datas[nomeprofissional]';'$datas[orgao]';'$datas[cargo]';'$datas[setor]';'$datas[posicao]';
";
se eu colocar \n para pular linha quando criar o txt no final observe na pratica $datas[posicao]\n';
O txt fica blz com linhas puladas e etc , para zipar uso uma classe que faz uso do zip.lib.php , daí o salto de linha no txt que foi para dentro do zip passa a ser um quadradinho.
Quando o software(delphi) que recebe este txt vai ler para realizar os inserts não se acha com esse quadradinho
Alguem já resolveu isso ou tem alguma dica ????
Preciso trocar esse \n por uma coisa que seja comum aos dois caras
Obrigado por hora
"A humanidade está perdendo seus maiores gênios... Aristóteles faleceu, Newton bateu as botas, Einstein morreu, e eu não tô passando muito bem hoje... "
#9
Posted 02/03/2005, 16:09
Gero o arquivo txt e depois crio um zip com a classe "zip.lib.php" que pega esses arquivo, no meu exemplo abaixo, estarei usando dois arquivos .txt que criei para colocar dentro, da uma olhada :
<?php
require("zip.lib.php");
$arq1 ="arquivo.txt"; //nome do arquivo a ser compactado
$arq2 ="mesa_prog.txt"; //nome do arquivo a ser compactado
$abre1 = fopen($arq1, "r");
$com1 = fread($abre1, filesize($arq1)); //string contendo o arquivo a ser compactado
fclose($abre1);
$abre2 = fopen($arq2, "r");
$com2 = fread($abre2, filesize($arq2)); //string contendo o arquivo a ser compactado
fclose($abre2);
$zip= new zipfile; //cria o objeto
$zip->addFile($com1,"$arq1"); //adiciona um arquivo ao zip
$zip->addFile($com2,"$arq2"); //adiciona um arquivo ao zip
$strzip=$zip->file(); //string contendo o arquivo zip
$arq="'dados.zip";
$abre = fopen($arq, "w");
$salva = fwrite($abre, $strzip);
fclose($abre);
echo "<a href='dados.zip'>clique aqui para baixar o dados.zip</a>";
?>
em anexo o arquivo zip.lib.php
Abçs
Edição feita por: hugo, 02/03/2005, 21:13.
.................................................................
Anuncie grátis
.................................................................
#10
Posted 02/03/2005, 19:49
"A humanidade está perdendo seus maiores gênios... Aristóteles faleceu, Newton bateu as botas, Einstein morreu, e eu não tô passando muito bem hoje... "
#11
Posted 02/03/2005, 21:10
Pega aí o arquivo
<?php
class zipfile
{
/**
* Array para armazenar dados comprimidos
*
* @var array $datasec
*/
var $datasec = array();
/**
* diretório central
*
* @var array $ctrl_dir
*/
var $ctrl_dir = array();
/**
* Fim do registro do diretório central
*
* @var string $eof_ctrl_dir
*/
var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
/**
* Posição do último offset
*
* @var integer $old_offset
*/
var $old_offset = 0;
/**
* Converte a data no formato Unix para formato DOS
*
*/
function unix2DosTime($unixtime = 0) {
$timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
if ($timearray['year'] < 1980) {
$timearray['year'] = 1980;
$timearray['mon'] = 1;
$timearray['mday'] = 1;
$timearray['hours'] = 0;
$timearray['minutes'] = 0;
$timearray['seconds'] = 0;
} // end if
return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |
($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
}
/**
* Adiciona um "arquivo" no formato zip.
*/
function addFile($data, $name, $time = 0)
{
$name = str_replace('\\', '/', $name);
$dtime = dechex($this->unix2DosTime($time));
$hexdtime = '\x' . $dtime[6] . $dtime[7]
. '\x' . $dtime[4] . $dtime[5]
. '\x' . $dtime[2] . $dtime[3]
. '\x' . $dtime[0] . $dtime[1];
eval('$hexdtime = "' . $hexdtime . '";');
$fr = "\x50\x4b\x03\x04";
$fr .= "\x14\x00";
$fr .= "\x00\x00";
$fr .= "\x08\x00";
$fr .= $hexdtime;
$unc_len = strlen($data);
$crc = crc32($data);
$zdata = gzcompress($data);
$zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
$c_len = strlen($zdata);
$fr .= pack('V', $crc);
$fr .= pack('V', $c_len);
$fr .= pack('V', $unc_len);
$fr .= pack('v', strlen($name));
$fr .= pack('v', 0);
$fr .= $name;
$fr .= $zdata;
$fr .= pack('V', $crc);
$fr .= pack('V', $c_len);
$fr .= pack('V', $unc_len);
$this -> datasec[] = $fr;
$new_offset = strlen(implode('', $this->datasec));
$cdrec = "\x50\x4b\x01\x02";
$cdrec .= "\x00\x00";
$cdrec .= "\x14\x00";
$cdrec .= "\x00\x00";
$cdrec .= "\x08\x00";
$cdrec .= $hexdtime;
$cdrec .= pack('V', $crc);
$cdrec .= pack('V', $c_len);
$cdrec .= pack('V', $unc_len);
$cdrec .= pack('v', strlen($name) );
$cdrec .= pack('v', 0 );
$cdrec .= pack('v', 0 );
$cdrec .= pack('v', 0 );
$cdrec .= pack('v', 0 );
$cdrec .= pack('V', 32 );
$cdrec .= pack('V', $this -> old_offset );
$this -> old_offset = $new_offset;
$cdrec .= $name;
$this -> ctrl_dir[] = $cdrec;
}
/**
*
*
* Retorna um string contento um arquivo zip
*
*
*/
function file()
{
$data = implode('', $this -> datasec);
$ctrldir = implode('', $this -> ctrl_dir);
return
$data .
$ctrldir .
$this -> eof_ctrl_dir .
pack('v', sizeof($this -> ctrl_dir)) .
pack('v', sizeof($this -> ctrl_dir)) .
pack('V', strlen($ctrldir)) .
pack('V', strlen($data)) .
"\x00\x00";
}
}
?>
.................................................................
Anuncie grátis
.................................................................
#12
Posted 02/03/2005, 22:30
tah retornando um erro na linha 77....tentei arrumar.... mas nada!!!
Fatal error: Call to undefined function: gzcompress() in c:\arquivos de programas\easyphp2\www\pasta\zip.lib.php on line 77
Edição feita por: Luke, 02/03/2005, 22:31.
"A humanidade está perdendo seus maiores gênios... Aristóteles faleceu, Newton bateu as botas, Einstein morreu, e eu não tô passando muito bem hoje... "
#13
Posted 05/03/2005, 18:50
Eles já estão no server ?
Eles precisam esta com permissão 777
Checa isso, aí duvidas tu posta o exemplo que tu alterou
Abraços
Hugo
.................................................................
Anuncie grátis
.................................................................
#14
Posted 13/05/2005, 14:28
vc poderia falar melhor sobre essa classe pra mim.
obrigado
$exte = (isset($cvs)) ? '.cvs' : '.txt'; $abbre = fopen(time().$exte, "w+");a nao entendi esse code ae em cima sera q da pra me dizer o q é?
tipo ele abre um arquivo até ae tudo blz so q q arquivo cade o nome do arquivo ae? q locura e esse isset é o q? a to ficando doido
Edição feita por: direisc, 13/05/2005, 14:38.
#15
Posted 13/05/2005, 15:28
;direisc@yahoo.com.br ;direisc@yahoo.com.br ;direisc@yahoo.com.br ;direisc@yahoo.com.br ;direisc@yahoo.com.br ;direisc@yahoo.com.br ;direisc@yahoo.com.br ;direisc@yahoo.com.br ;direisc@yahoo.com.br ;dasda ;asdasd ;da ;jkjkjsadjkjk ;dasd ;ghjghjgh ;asd ;sad ;dasdolha como ta retornando meu txt
me parece q meu codigo esta certo vcs podem me dar uma resposta a respeito?
segue o php
<?
include("config.php");
$sql = @mysql_query("SELECT nome, email FROM cadastro WHERE info='1'") or die("erro no sql");
$arquivo_text = '';
while ($datas = mysql_fetch_array($sql)){
$arquivo_text .= "$data[nome];$datas[email]\n";
}
$abbre = fopen("email.txt", "w+");
fwrite($abbre, $arquivo_text);
fclose($abbre);
echo "Arquivo criado com sucesso!";
?>
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)