Gerando arquivo CSV com o nome das Colunas da Tabela e conteúdo. Ola a todos! Preciso gerar um arquivo CSV baseado em uma consulta que envolver varias tabelas (6) e após essa consulta gerar um arquivo csv. Mas estou com problemas na hora de usar a classe TPage com a function onExportCSV() exemplo do TUTOR. A classe gera o arquivo mas nao gera com os cabeçalhos que vem do banco e se possivel a minha busca envolve ...
AJ
Gerando arquivo CSV com o nome das Colunas da Tabela e conteúdo.  
Ola a todos! Preciso gerar um arquivo CSV baseado em uma consulta que envolver varias tabelas (6) e após essa consulta gerar um arquivo csv.
Mas estou com problemas na hora de usar a classe TPage com a function onExportCSV() exemplo do TUTOR. A classe gera o arquivo mas nao gera com os cabeçalhos que vem do banco e se possivel a minha busca envolve
<?php   $repository = new TRepository('AvaliacaoExames'); ?>
mais de uma Tabela eu preciso fazer uma QUERY envolendo outras tabelas. Deixo minha classe.
<?php/** * CustomerDataGridView * * @version    1.0 * @package    samples * @subpackage tutor * @author    Apolonio Santiago da Silva Junior * @copyright  Copyright (c) 2006-2014 iCriaçoes Ltd. (http://www.icriacoes.com.br) * @license    http://www.adianti.com.br/framework-license */class CSVPaciente extends TPage{    private $form;      // search form    private $datagrid;  // listing    private $pageNavigation;    private $loaded;        /**     * Class constructor     * Creates the page, the search form and the listing     */    public function __construct()    {        parent::__construct();        new TSession;                // creates the form        $this->form = new TForm('form_search_paciente');                // create the form fields        $paciente   = new TEntry('codPaciente');        $tipoExame = new TEntry('codTipoExame');                $paciente->setSize(170);        $tipoExame->setSize(126);                $paciente->setValue(TSession::getValue('codPaciente'));        $tipoExame->setValue(TSession::getValue('codTipoExame'));                $table = new TTable;                $row = $table->addRow();        $cell=$row->addCell('');        $cell->width= 80;        $row->addCell($paciente);                $cell=$row->addCell('');        $row->addCell($tipoExame);        $this->form->add($table);                // creates the action button        $button1=new TButton('find');        $button1->setAction(new TAction(array($this, 'onSearch')), 'Buscar');        $button1->setImage('ico_find.png');      //  $button2=new TButton('new');      //  $button2->setAction(new TAction(array('CustomerFormView', 'onEdit')), 'New');      //  $button2->setImage('ico_new.png');                $button3=new TButton('csv');        $button3->setAction(new TAction(array($this, 'onExportCSV')), 'CSV');        $button3->setImage('ico_print.png');                $row->addCell($button1);        //$row->addCell($button2);        $row->addCell($button3);                //$this->form->setFields(array($name, $city_name, $button1, $button2, $button3));        $this->form->setFields(array($paciente, $tipoExame, $button1, $button3));                // creates a DataGrid        $this->datagrid = new TQuickGrid;        $this->datagrid->setHeight(200);        // creates the datagrid columns        $this->datagrid->addQuickColumn('Id', 'codExame', 'right', 40, new TAction(array($this, 'onReload')), array('order', 'codExame'));        $this->datagrid->addQuickColumn('Paciente', 'codPaciente', 'left', 140, new TAction(array($this, 'onReload')), array('order', 'codPaciente'));        $this->datagrid->addQuickColumn('Avaliador', 'codAvaliador', 'left', 170, new TAction(array($this, 'onReload')), array('order', 'codAvaliador'));        $this->datagrid->addQuickColumn('Exame', 'codTipoExame', 'left', 140, new TAction(array($this, 'onReload')), array('order', 'codTipoExame'));        $this->datagrid->addQuickColumn('Medida', 'medida', 'left', 140);        $this->datagrid->addQuickColumn('Conclusao', 'conclusao', 'left', 190);        $this->datagrid->addQuickColumn('Parecer', 'parecer', 'left', 190);        $this->datagrid->addQuickColumn('Data', 'dataExames', 'left', 120);        $this->datagrid->addQuickColumn('Wells', 'codWells', 'left', 120);        // creates two datagrid actions      //  $this->datagrid->addQuickAction('Edit', new TDataGridAction(array('CustomerFormView', 'onEdit')), 'id', 'ico_edit.png');        $this->datagrid->addQuickAction('Delete', new TDataGridAction(array($this, 'onDelete')), 'codExame', 'ico_delete.png');                // create the datagrid model        $this->datagrid->createModel();                // creates the page navigation        $this->pageNavigation = new TPageNavigation;        $this->pageNavigation->setAction(new TAction(array($this, 'onReload')));        $this->pageNavigation->setWidth($this->datagrid->getWidth());                // creates the page structure using a vertical box        $vbox = new TVBox;        $vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__));        $vbox->add($this->form);        $vbox->add($this->datagrid);        $vbox->add($this->pageNavigation);                // add the box inside the page        parent::add($vbox);    }        /**     * method onSearch()     * Register the filter in the session when the user performs a search     */    function onSearch()    {        // get the search form data        $data = $this->form->getData();                // check if the user has filled the form        if (isset($data->codPaciente) AND ($data->codTipoExame))        {            // creates a filter using what the user has typed            $filter = new TFilter('codPaciente', 'like', "%{$data->codPaciente}%");                        // stores the filter in the session            TSession::setValue('codPaciente', $filter);            TSession::setValue('codTipoExame',   $data->codTipoExame);                    }        else        {            TSession::setValue('codPaciente', NULL);            TSession::setValue('codTipoExame',   '');        }                        // check if the user has filled the form        if ($data->codTipoExame)        {            // creates a filter using what the user has typed            $filter = new TFilter('(SELECT descricaoTipoExame from system_tipo_exames)', 'like', "{$data->codTipoExame}%");                        // stores the filter in the session            TSession::setValue('codTipoExame', $filter);            TSession::setValue('codTipoExame', $data->codTipoExame);        }        else        {            TSession::setValue('codPaciente', NULL);            TSession::setValue('codPaciente', '');        }                // fill the form with data again        $this->form->setData($data);                $param=array();        $param['offset']    =0;        $param['first_page']=1;        $this->onReload($param);    }        /**     * method onReload()     * Load the datagrid with the database objects     */    function onReload($param = NULL)    {        try        {            // open a transaction with database 'samples'            TTransaction::open('permission');                        // creates a repository for Customer            $repository = new TRepository('AvaliacaoExames');            $limit = 20;                        // creates a criteria            $criteria = new TCriteria;                        $newparam = $param; // define new parameters            if (isset($newparam['order']) AND $newparam['order'] == 'system_tipo_exames->descricaoTipoExame')            {                $newparam['order'] = '(select descricaoTipoExame from system_tipo_exames)';            }                        // default order            if (empty($newparam['order']))            {                $newparam['order'] = 'codExame';                $newparam['direction'] = 'asc';            }                        $criteria->setProperties($newparam); // order, offset            $criteria->setProperty('limit', $limit);                        if (TSession::getValue('codPaciente'))            {                // add the filter stored in the session to the criteria                $criteria->add(TSession::getValue('codPaciente'));            }                        if (TSession::getValue('codAvaliador'))            {                // add the filter stored in the session to the criteria                $criteria->add(TSession::getValue('codAvaliador'));            }                           // load the objects according to criteria            $paciente = $repository->load( $criteria, FALSE);            $this->datagrid->clear();                        if ($paciente)            {                foreach ($paciente as $pacientes)                {                    // add the object inside the datagrid                    $this->datagrid->addItem($pacientes);                }            }                               // reset the criteria for record count            $criteria->resetProperties();            $count= $repository->count($criteria);                        $this->pageNavigation->setCount($count); // count of records            $this->pageNavigation->setProperties($param); // order, page            $this->pageNavigation->setLimit($limit); // limit                        // close the transaction            TTransaction::close();            $this->loaded = true;        }        catch (Exception $e) // in case of exception        {            // shows the exception error message            new TMessage('error', '<b>Error</b> ' . $e->getMessage());            // undo all pending operations            TTransaction::rollback();        }    }        function onExportCSV()    {        $this->onSearch();        try        {            // open a transaction with database 'samples'            TTransaction::open('permission');                        // creates a repository for Customer            $repository = new TRepository('AvaliacaoExames');                        // creates a criteria            $criteria = new TCriteria;                        if (TSession::getValue('codPaciente'))            {                // add the filter stored in the session to the criteria                $criteria->add(TSession::getValue('codPaciente'));            }                        if (TSession::getValue('codAvaliador'))            {                // add the filter stored in the session to the criteria                $criteria->add(TSession::getValue('codAvaliador'));            }                        $csv = '';            // load the objects according to criteria            $customers = $repository->load($criteria);            if ($customers)            {                $csv .= $customer.'id'.';'.                            $customer.'Paciente'.';'.                            $customer.'Avaliador'.';'.                            $customer.'Exame'.';'.                            $customer.'Tipo'.';'.                            $customer.'Medida'.';'.                            $customer.'Conclusao'.';'.                            $customer.'Parecer'."\n";                foreach ($customers as $customer)                {                    $csv .= $customer->codExame.';'.                            $customer->codPaciente.';'.                            $customer->codAvaliador.';'.                            $customer->codTipoExame.';'.                            $customer->medida.';'.                            $customer->conclusao.';'.                            $customer->parecer.';'.                            $customer->dataExames."\n";                }                file_put_contents('app/output/exames.csv', $csv);                TPage::openFile('app/output/exames.csv');            }            // close the transaction            TTransaction::close();        }        catch (Exception $e) // in case of exception        {            // shows the exception error message            new TMessage('error', '<b>Error</b> ' . $e->getMessage());            // undo all pending operations            TTransaction::rollback();        }    }        /**     * method onDelete()     * executed whenever the user clicks at the delete button     * Ask if the user really wants to delete the record     */    function onDelete($param)    {        // define the next action        $action1 = new TAction(array($this, 'Delete'));        $action1->setParameters($param); // pass 'key' parameter ahead                // shows a dialog to the user        new TQuestion('Você deseja realmente apagar o exame ?', $action1);    }        /**     * method Delete()     * Delete a record     */    function Delete($param)    {        try        {            // get the parameter $key            $key=$param['key'];                        // open a transaction with database 'samples'            TTransaction::open('permission');                        // instantiates object Customer            $customer = new AvaliacaoExames($key);            // deletes the object from the database            $customer->delete();                        // close the transaction            TTransaction::close();                        // reload the listing            $this->onReload($param);            // shows the success message            new TMessage('info', "Exame apagado com sucesso!");        }        catch (Exception $e) // in case of exception        {            // shows the exception error message            new TMessage('error', '<b>Error</b> ' . $e->getMessage());            // undo all pending operations            TTransaction::rollback();        }    }    /**     * method show()     * Shows the page     */    function show()    {        // check if the datagrid is already loaded        if (!$this->loaded)        {            $this->onReload( func_get_arg(0) );        }        parent::show();    }}?>


Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (1)


FC

Troque essa parte

<?phpif ($customers)            {                $csv .= $customer.'id'.';'.                            $customer.'Paciente'.';'.                            $customer.'Avaliador'.';'.                            $customer.'Exame'.';'.                            $customer.'Tipo'.';'.                            $customer.'Medida'.';'.                            $customer.'Conclusao'.';'.                            $customer.'Parecer'."n";                foreach ($customers as $customer)                {                    $csv .= $customer->codExame.';'.                            $customer->codPaciente.';'.                            $customer->codAvaliador.';'.                            $customer->codTipoExame.';'.                            $customer->medida.';'.                            $customer->conclusao.';'.                            $customer->parecer.';'.                            $customer->dataExames."n";                } }?>


Por esta

<?phpif ($customers)            {                $csv = 'id;Paciente;Avaliador;Exame;Tipo;Medida;Conclusao;Parecer'."\n";                                foreach ($customers as $customer)                {                    $csv .= $customer->codExame.';'.                            $customer->codPaciente.';'.                            $customer->codAvaliador.';'.                            $customer->codTipoExame.';'.                            $customer->medida.';'.                            $customer->conclusao.';'.                            $customer->parecer.';'.                            $customer->dataExames."\n";                } }?>