Jump to content


Photo

Gerar Arquivo Csv Ou Txt C/ Conteúdo De Uma Tabela


  • Faça o login para participar
15 replies to this topic

#1 hugo

hugo

    Super Gestão - Soluções para Internet

  • Usuários
  • 174 posts
  • Sexo:Masculino
  • Localidade:São Paulo
  • Interesses:Trocar conhecimentos (ajudar e também aprender)

Posted 16/11/2004, 10:14

Bom dia para todos,

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
Super Gestão - Desenvolvimento de Sites e Sistemas
.................................................................
Anuncie grátis
.................................................................

#2 sk15

sk15

    Super Veterano

  • Usuários
  • 2071 posts
  • Sexo:Masculino
  • Localidade:SP - SP

Posted 16/11/2004, 13:14

1º Sua pergunta está na seção errada .. aqui é tutoriais e sua pergunta é de como fazer o sistema e nao um reposta dele pronto...
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 hugo

hugo

    Super Gestão - Soluções para Internet

  • Usuários
  • 174 posts
  • Sexo:Masculino
  • Localidade:São Paulo
  • Interesses:Trocar conhecimentos (ajudar e também aprender)

Posted 16/11/2004, 14:03

Ae SK15,

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.

Super Gestão - Desenvolvimento de Sites e Sistemas
.................................................................
Anuncie grátis
.................................................................

#4 sk15

sk15

    Super Veterano

  • Usuários
  • 2071 posts
  • Sexo:Masculino
  • Localidade:SP - SP

Posted 17/11/2004, 14:08

Ele so mostro o ulitmo por que o erro foi mue :(
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 hugo

hugo

    Super Gestão - Soluções para Internet

  • Usuários
  • 174 posts
  • Sexo:Masculino
  • Localidade:São Paulo
  • Interesses:Trocar conhecimentos (ajudar e também aprender)

Posted 17/11/2004, 19:05

Ae SK15 muito obrigado.

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
Super Gestão - Desenvolvimento de Sites e Sistemas
.................................................................
Anuncie grátis
.................................................................

#6 hugo

hugo

    Super Gestão - Soluções para Internet

  • Usuários
  • 174 posts
  • Sexo:Masculino
  • Localidade:São Paulo
  • Interesses:Trocar conhecimentos (ajudar e também aprender)

Posted 19/11/2004, 20:59

Caro SK15,

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
Super Gestão - Desenvolvimento de Sites e Sistemas
.................................................................
Anuncie grátis
.................................................................

#7 hugo

hugo

    Super Gestão - Soluções para Internet

  • Usuários
  • 174 posts
  • Sexo:Masculino
  • Localidade:São Paulo
  • Interesses:Trocar conhecimentos (ajudar e também aprender)

Posted 26/11/2004, 11:19

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
Super Gestão - Desenvolvimento de Sites e Sistemas
.................................................................
Anuncie grátis
.................................................................

#8 Luke

Luke

    O Que Sei É Que Nada Sei

  • Usuários
  • 304 posts
  • Sexo:Não informado
  • Localidade:Bsb

Posted 02/03/2005, 15:02

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

Diz ae cara.... como vc conseguiu disponibilizar o arquivo em .zip?
######################
"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 hugo

hugo

    Super Gestão - Soluções para Internet

  • Usuários
  • 174 posts
  • Sexo:Masculino
  • Localidade:São Paulo
  • Interesses:Trocar conhecimentos (ajudar e também aprender)

Posted 02/03/2005, 16:09

Eu fia a seguinte solução :

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.

Super Gestão - Desenvolvimento de Sites e Sistemas
.................................................................
Anuncie grátis
.................................................................

#10 Luke

Luke

    O Que Sei É Que Nada Sei

  • Usuários
  • 304 posts
  • Sexo:Não informado
  • Localidade:Bsb

Posted 02/03/2005, 19:49

Cara cadê o anexo do arquivo zip.lib.php?
######################
"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 hugo

hugo

    Super Gestão - Soluções para Internet

  • Usuários
  • 174 posts
  • Sexo:Masculino
  • Localidade:São Paulo
  • Interesses:Trocar conhecimentos (ajudar e também aprender)

Posted 02/03/2005, 21:10

Então, desculpa ae mas foi a minha pressa.
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";
}
}
?>
Super Gestão - Desenvolvimento de Sites e Sistemas
.................................................................
Anuncie grátis
.................................................................

#12 Luke

Luke

    O Que Sei É Que Nada Sei

  • Usuários
  • 304 posts
  • Sexo:Não informado
  • Localidade:Bsb

Posted 02/03/2005, 22:30

Cara....esse arquivo zip.lib.php

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 hugo

hugo

    Super Gestão - Soluções para Internet

  • Usuários
  • 174 posts
  • Sexo:Masculino
  • Localidade:São Paulo
  • Interesses:Trocar conhecimentos (ajudar e também aprender)

Posted 05/03/2005, 18:50

Quais são os arquivos que vc esta esta jogando dentro do zip ?

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
Super Gestão - Desenvolvimento de Sites e Sistemas
.................................................................
Anuncie grátis
.................................................................

#14 direisc

direisc

    Normal

  • Usuários
  • 90 posts
  • Sexo:Não informado

Posted 13/05/2005, 14:28

usando essa classe e esses comando todos ae é possivel funcionar mesmo nao tendo o dll no servidor dos zips
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 direisc

direisc

    Normal

  • Usuários
  • 90 posts
  • Sexo:Não informado

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
;dasd
olha como ta retornando meu txt :blink:
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)

IPB Skin By Virteq