Pessoal,
Boa tarde.

Depois de um longo tempo sem postar, vou voltar com uma novidade legal pra vocês que estou utilizando em um projeto onde preciso criar uma integração entre dois sistemas, um local e outro na web: a exportação de dados para um arquivo CSV.

Para isso, criei um classe contendo a função que iremos utilizar, disponível aqui.

Exemplo de uso:

<?php

require_once("classe.php");


// Conecta no banco de dados

$hostname = "localhost";
$usuario = "root";
$senha = "";
$database = "empresa";

$conexao = mysql_connect( $hostname, $usuario, $senha );
mysql_select_db( $database, $conexao );



// Exporta os dados

$classe = new Exporta();
$classe->exportMysqlToCsv("SELECT * FROM cores", "cores.csv");


?>

E isso irá gerar um arquivo com o abaixo:

ID,STATUS,MARCA,DATA_INC,DATA_ALT,DATA_HAB,NOME,DATA_COM,COD_INTELIGENTE,ID_COLECAO,DATA_PUBLIC
"1","N","N","2007-08-14","2007-08-14",,"UNICA","2007-08-14 17:32:59",,,
"2","N","N","2007-08-14","2007-08-14",,"BRANCA","2007-08-14 17:33:35",,,
"3","N","N","2007-08-14","2007-08-14",,"AMARELA","2007-08-14 17:33:47",,,
"4","N","N","2007-08-14","2007-08-17",,"AZUL CLARO","2007-08-17 15:24:53",,,
"5","N","N","2007-08-14","2007-08-14",,"VERDE","2007-08-14 17:34:19",,,
"12","N","N","2007-08-17","2007-08-17",,"DIVERSAS","2007-08-17 17:10:28",,,
"6","N","N","2007-08-14","2007-08-14",,"ROSA","2007-08-14 17:34:29",,,
"7","N","N","2007-08-14","2007-08-14",,"LARANJA","2007-08-14 17:34:40",,,
"8","N","N","2007-08-14","2007-08-14",,"LILAS","2007-08-14 17:34:53",,,
"9","N","N","2007-08-14","2007-08-14",,"PRETO","2007-08-14 17:35:20",,,
"10","N","N","2007-08-17","2007-08-17",,"AZUL ESCURO","2007-08-17 15:25:09",,,
"11","N","N","2007-08-17","2007-08-17",,"AZUL MARINHO","2007-08-17 15:25:37",,,
"13","N","N","2007-08-17","2007-08-17",,"PINK","2007-08-17 17:44:10",,,
"14","N","N","2007-08-17","2007-08-17",,"VERMELHA","2007-08-17 18:13:37",,,

E é isso aí, pessoal! Até a próxima!

Para quem não quer baixar a classe, segue o código dela abaixo:

<?php

class Exporta
{

    public function exportMysqlToCsv( $strQuery, $Ds_Arquivo_Destino = 'export.csv' )
    {
        $Ds_Separador_Linha = "\n";
        $Ds_Separador_Coluna = ",";
        $Ds_Caracter_Encapsular = '"';
        $Ds_Caracter_Escape = "\\";

        // Recupera os dados do servidor
        $Ds_Retorno = mysql_query( $strQuery );
        $Nr_Colunas = mysql_num_fields( $Ds_Retorno );


        $Ds_Linha_CSV = '';

        for ( $i = 0; $i < $Nr_Colunas; $i++ )
        {
            $Ds_Linha_CSV .= mysql_field_name( $Ds_Retorno, $i ) . $Ds_Separador_Coluna;
        }

        $Ds_Saida = trim( substr( $Ds_Linha_CSV, 0, -1 ) );
        $Ds_Saida .= $Ds_Separador_Linha;

        while ( $Ds_Linha_Banco = mysql_fetch_array( $Ds_Retorno ) )
        {
            $Ds_Linha_CSV = '';
            for ( $j = 0; $j < $Nr_Colunas; $j++ )
            {
                if ( $Ds_Linha_Banco[$j] == '0' || $Ds_Linha_Banco[$j] != '' )
                {

                    if ( $Ds_Caracter_Encapsular == '' )
                    {
                        $Ds_Linha_CSV .= $Ds_Linha_Banco[$j];
                    }
                    else
                    {
                        $Ds_Linha_CSV .= $Ds_Caracter_Encapsular . str_replace( $Ds_Caracter_Encapsular, $Ds_Caracter_Escape . $Ds_Caracter_Encapsular, $Ds_Linha_Banco[$j] ) . $Ds_Caracter_Encapsular;
                    }
                }
                else
                {
                    $Ds_Linha_CSV .= '';
                }

                if ( $j < $Nr_Colunas - 1 )
                {
                    $Ds_Linha_CSV .= $Ds_Separador_Coluna;
                }
            }

            $Ds_Saida .= $Ds_Linha_CSV;
            $Ds_Saida .= $Ds_Separador_Linha;
        }


            
        // Grava o arquivo físico
        if ( !is_dir( dirname( $Ds_Arquivo_Destino ) ) )
        {
            mkdir( dirname( $Ds_Arquivo_Destino ), 0755, true );
        }

        $criarArquivo = (!is_file( $Ds_Arquivo_Destino ) );
        $objTxt = fopen( $Ds_Arquivo_Destino, "w" );
        if ( $criarArquivo)
        {
            //UTF-8
            fwrite( $objTxt, pack( "CCC", 0xef, 0xbb, 0xbf ) );
        }
        
        fwrite( $objTxt, $Ds_Saida );
        fclose( $objTxt );
        

    }
	
}

?>