Ir para conteúdo

diego.baiao

Members
  • Total de itens

    26
  • Registro em

  • Última visita

Reputação

0 Comum

Sobre diego.baiao

Informações Pessoais

  • Sexo
    Masculino
  • Localização
    Santa Catarina - SC
  • Interesses
    PHP, MySQL, Postgresql,javascript

Contato

Últimos Visitantes

248 visualizações
  1. diego.baiao

    Delete/Truncate

    Pessoal desculpa ter aberto o chamado mais acho que ja descobri acabei de rodar um TRUNCATE TABLE e resolveu agora não tenho os 45GB, ate sumiu quando rodo para ver o tamanho de todo o meu banco, pelo o que entendi que o TRUNCATE elimina dados de transações que eram os 45GB e mantem toda a estrutura da tabela intacta(indexadores, FK, PK). Então resumindo para apagar todos os dados de uma tabela de forma limpa e rapida sem deixar vestígios use Truncate; Para poder selecionar dados com where use Delete, isto é, caso não queira apagar tudo, pois o truncate não aceita parametros adicionais (WHERE, LIMIT, etc) Deixo os links que me ajudaram abaixo: https://gustavomaiaaguiar.wordpress.com/2010/07/21/truncate-versus-delete-uma-explicacao-mais-detalhada/ http://www.oraclehome.com.br/2013/08/14/diferencas-entre-truncate-table-drop-table-ou-delete-from/
  2. diego.baiao

    Delete/Truncate

    Olá pessoal bom dia! Preciso de uma ajuda com um detalhe no banco de dados no caso é postgres v.9.4 , explicando a situação estou fazendo uma manutenção de dados de certos logs que gero e tenho exemplo uma tabela que é envios.envio_contato_log_status ela tinha mais 220GB só nela eu limpei ficou de boa (agora esta zerado e nem lista abaixo), só que ao rodar o código que mede o tamanho das tabelas vejo que tenho uma de 45GB informados como consigo apagar esse cara envios.envio_contato_log_status_pkey (chave primaria da tabela acima referida envios.envio_contato_log_status) não entendi o banco ele armazena dados nas chaves primarias, indexadores, etc... Minha duvida se tem algo que permite eu excluir esses dados, no caso sabemos que essa tabela não é mais usada. Mais queria manter a estrutura do campos mesmo que vazia por enquanto e eliminar apenas esses 45GB que não tenho ideia de como remover esse kara.
  3. diego.baiao

    Logica de programação, array e laços

    Opa boa tarde! Não. Eu já tenho a consulta e já listei ela no php através de um array de 32 posições. Agora tenho que trabalhar em cima desse array de 32 posições para formar um array final de 6 posições, que são elas agrupadas por mes/ano.
  4. diego.baiao

    Logica de programação, array e laços

    Opa bom dia IGU. Eu tenho minha consulta o qual tem os 32 registros correto , ate ai blz. No meu model eu trabalho com ZF1 com MVC, eu tenho a consulta condensada e chamo ela no meu Controller. Dando um var dump nela tenho aqueles dados conforme array de 31 posições = 32 registros (pois a posição "zero" conta tb) ate ai blz também. Agora que vem o problema tenho que montar aquela saída dos 6 blocos(arrays) de saida exatamente no formato passado. Esses dados que eu puxo sempre tera 6 meses atuais, na minha consulta do banco ele ja identifica o mes atual e decrementa mais 5 meses totalizando sempre 6 meses, então independente minha saída sempre será nesse padrão independente de quantos registros tenha minha consulta nessa especifica veio (32 registros) para meu usuário, isso varia de sauriose para usurário, pois é a movimentação da conta, então tenho que pegar esses dados e agrupados de maneira que fique tudo na mesma forma conforme acima citado. Tem que ficar assim e isso é padrão para todos os usuários, sempre vai ter 6 blocos(arrays) onde agrupa status e quantidade por mes/ano. ["data"] => array(6) { [0] => array(10) { ["aguardando"] => string(1) "0" ["bloqueada"] => string(1) "0" ["enviado_operadora"] => string(1) "0" ["nao_recebida"] => string(1) "0" ["entregue_sem_confirmacao"] => string(1) "8" ["entregue_com_confirmacao"] => string(1) "1" ["cancelada"] => string(1) "0" ["total_enviado"] => string(1) "9" ["mes_ano"] => string(10) "Mai / 2018" ["opcoes"] => string(217) "<center><a href='/m/05/a/2018' title='Listar'</a></center>" } [1] => array(10) { ["aguardando"] => string(1) "0" ["bloqueada"] => string(1) "2" ["enviado_operadora"] => string(1) "3" ["nao_recebida"] => string(3) "207" ["entregue_sem_confirmacao"] => string(5) "1.146" ["entregue_com_confirmacao"] => string(3) "552" ["cancelada"] => string(2) "12" ["total_enviado"] => string(5) "1.910" ["mes_ano"] => string(10) "Abr / 2018" ["opcoes"] => string(217) "<center><a href='/m/04/a/2018' title='Listar'</a></center>" } [2] => array(10) { ["aguardando"] => string(1) "1" ["bloqueada"] => string(1) "9" ["enviado_operadora"] => string(1) "2" ["nao_recebida"] => string(1) "5" ["entregue_sem_confirmacao"] => string(2) "10" ["entregue_com_confirmacao"] => string(2) "85" ["cancelada"] => string(3) "418" ["total_enviado"] => string(3) "112" ["mes_ano"] => string(10) "Mar / 2018" ["opcoes"] => string(217) "<center><a href='/m/03/a/2018' title='Listar'</a></center>" } [3] => array(10) { ["aguardando"] => string(1) "8" ["bloqueada"] => string(1) "2" ["enviado_operadora"] => string(1) "0" ["nao_recebida"] => string(1) "3" ["entregue_sem_confirmacao"] => string(2) "15" ["entregue_com_confirmacao"] => string(1) "9" ["cancelada"] => string(1) "1" ["total_enviado"] => string(2) "37" ["mes_ano"] => string(10) "Fev / 2018" ["opcoes"] => string(217) "<center><a href='/m/02/a/2018' title='Listar'</a></center>" } [4] => array(10) { ["aguardando"] => string(1) "0" ["bloqueada"] => string(2) "10" ["enviado_operadora"] => string(1) "1" ["nao_recebida"] => string(1) "4" ["entregue_sem_confirmacao"] => string(2) "15" ["entregue_com_confirmacao"] => string(2) "42" ["cancelada"] => string(1) "0" ["total_enviado"] => string(2) "72" ["mes_ano"] => string(10) "Jan / 2018" ["opcoes"] => string(217) "<center><a href='/m/01/a/2018' title='Listar'</a></center>" } [5] => array(10) { ["aguardando"] => string(1) "0" ["bloqueada"] => string(1) "1" ["enviado_operadora"] => string(1) "2" ["nao_recebida"] => string(1) "4" ["entregue_sem_confirmacao"] => string(1) "3" ["entregue_com_confirmacao"] => string(2) "25" ["cancelada"] => string(1) "0" ["total_enviado"] => string(2) "35" ["mes_ano"] => string(10) "Dez / 2017" ["opcoes"] => string(217) "<center><a href='/m/12/a/2017' title='Listar'</a></center>" }}
  5. diego.baiao

    Logica de programação, array e laços

    Prezados, boa noite! Preciso de uma ajuda estou recebendo uma consulta em um array e está quase tudo mastigado na própria consulta do banco, porém tenho que trabalhar no php e fazer uma alteração que não estou conseguindo que é formatar uma saída padrão um array onde cada bloco desse seria um array com a principal coluna "mesano". Estou usando ZF1(zend framework 1) e não consigo usar class teria que fazer um helper mais não entendo bem estou tentando usar no braço usando laços (for, foreach, while, if-else, etc... rs) Segue abaixo a saída da minha consulta (31 registros): O Array da consulta listada acima fica conforme informação abaixo: *** Não coloquei todos foi só para ilustrar minha saída real (abaixo ficou com os dados de maio, abril (2018) e final dezembro(2017) seria o ultimo registro posição do array [31]) ["data"] => array(6) { [0] => array(5) { ["mes"] => string(1) "5" ["ano"] => string(4) "2018" ["mesano"] => string(6) "5/2018" ["entregue_sem_confirmacao"] => string(1) "8" } [1] => array(5) { ["mes"] => string(1) "5" ["ano"] => string(4) "2018" ["mesano"] => string(6) "5/2018" ["entregue_com_confirmacao"] => string(1) "1" } [2] => array(5) { ["mes"] => string(1) "4" ["ano"] => string(4) "2018" ["mesano"] => string(6) "4/2018" ["bloqueada"] => string(1) "2" } [3] => array(5) { ["mes"] => string(1) "4" ["ano"] => string(4) "2018" ["mesano"] => string(6) "4/2018" ["cancelada"] => string(2) "12" } [4] => array(10) { ["mes"] => string(1) "4" ["ano"] => string(4) "2018" ["mesano"] => string(6) "4/2018" ["nao_recebida"] => string(3) "207" } [5] => array(5) { ["mes"] => string(1) "4" ["ano"] => string(4) "2018" ["mesano"] => string(6) "4/2018" ["entregue_sem_confirmacao"] => string(3) "552" } [6] => array(5) { ["mes"] => string(1) "5" ["ano"] => string(4) "2018" ["mesano"] => string(6) "4/2018" ["entregue_com_confirmacao"] => string(4) "1146" } [7] => array(10) { ["mes"] => string(1) "5" ["ano"] => string(4) "2018" ["mesano"] => string(6) "4/2018" ["entregue_para_operadora"] => string(1) "3" } ................. ................. ................. [31] => array(5) { ["mes"] => string(2) "12" ["ano"] => string(4) "2017" ["mesano"] => string(7) "12/2017" ["bloqueada"] => string(1) "1" } } Vendo a situação acima da imagem que é o resultado da consulta e a impressão com var_dump montado o array eu tenho que agrupar as informações pela coluna "mesano" que é uma concatenação da coluna "mês" com "ano". Vamos as considerações: *** No resultado dessa consulta vista acima eu preciso montar uma saida em um array, onde deva conter todos os status (7 status) (mesmo não aparecendo todos caso não tenha o status ele deve existir e ir com valor padrão "zero") e qtd agrupados por "mesano", segue abaixo todos os status possíveis e mais as informações adicionais que deve ter em cada bloco do array. ______________________________________________ Aguardando (status da consulta) Bloqueada (status da consulta) Não Recebida (status da consulta) Enviado a operadora (status da consulta) Entregue com confirmação (status da consulta) Entregue sem confirmação (status da consulta) Cancelada (status da consulta) Total enviada (vai ser uma posição do array nova onde deve contabilizar todas as qtd menos o que tiver cancelada caso exista) Mesano (vai ser o dado base para montar cada array) opcoes (vai entrar um link fixo mais informações da coluna referente ao bloco mes e ano ex: link mes / ano) _________________________________________________ Olhando o resultado da consulta acima eu teria 6 blocos de informações posição [0] a [5], sendo que conforme imagem e array acima a minha saida deverá conter 6 blocos de informações(arrays)( 1 bloco(array) 05/2018, 2 bloco(array) 04/2018, 3 bloco (array) 03/2018, 4 bloco (array) 02/2018 ,5 bloco(array) 01/2018 e 6 bloco(array)12/2017) preciso juntar as informações por blocos(array). A saída que eu preciso é o array abaixo com 6 blocos(array) de saida sendo assim cada um deles respectivo de cada mes/ano: ["data"] => array(6) { [0] => array(10) { ["aguardando"] => string(1) "0" ["bloqueada"] => string(1) "0" ["enviado_operadora"] => string(1) "0" ["nao_recebida"] => string(1) "0" ["entregue_sem_confirmacao"] => string(1) "8" ["entregue_com_confirmacao"] => string(1) "1" ["cancelada"] => string(1) "0" ["total_enviado"] => string(1) "9" ["mes_ano"] => string(10) "Mai / 2018" ["opcoes"] => string(217) "<center><a href='/m/05/a/2018' title='Listar'</a></center>" } [1] => array(10) { ["aguardando"] => string(1) "0" ["bloqueada"] => string(1) "2" ["enviado_operadora"] => string(1) "3" ["nao_recebida"] => string(3) "207" ["entregue_sem_confirmacao"] => string(5) "1.146" ["entregue_com_confirmacao"] => string(3) "552" ["cancelada"] => string(2) "12" ["total_enviado"] => string(5) "1.910" ["mes_ano"] => string(10) "Abr / 2018" ["opcoes"] => string(217) "<center><a href='/m/04/a/2018' title='Listar'</a></center>" } [2] => array(10) { ["aguardando"] => string(1) "1" ["bloqueada"] => string(1) "9" ["enviado_operadora"] => string(1) "2" ["nao_recebida"] => string(1) "5" ["entregue_sem_confirmacao"] => string(2) "10" ["entregue_com_confirmacao"] => string(2) "85" ["cancelada"] => string(3) "418" ["total_enviado"] => string(3) "112" ["mes_ano"] => string(10) "Mar / 2018" ["opcoes"] => string(217) "<center><a href='/m/03/a/2018' title='Listar'</a></center>" } [3] => array(10) { ["aguardando"] => string(1) "8" ["bloqueada"] => string(1) "2" ["enviado_operadora"] => string(1) "0" ["nao_recebida"] => string(1) "3" ["entregue_sem_confirmacao"] => string(2) "15" ["entregue_com_confirmacao"] => string(1) "9" ["cancelada"] => string(1) "1" ["total_enviado"] => string(2) "37" ["mes_ano"] => string(10) "Fev / 2018" ["opcoes"] => string(217) "<center><a href='/m/02/a/2018' title='Listar'</a></center>" } [4] => array(10) { ["aguardando"] => string(1) "0" ["bloqueada"] => string(2) "10" ["enviado_operadora"] => string(1) "1" ["nao_recebida"] => string(1) "4" ["entregue_sem_confirmacao"] => string(2) "15" ["entregue_com_confirmacao"] => string(2) "42" ["cancelada"] => string(1) "0" ["total_enviado"] => string(2) "72" ["mes_ano"] => string(10) "Jan / 2018" ["opcoes"] => string(217) "<center><a href='/m/01/a/2018' title='Listar'</a></center>" } [5] => array(10) { ["aguardando"] => string(1) "0" ["bloqueada"] => string(1) "1" ["enviado_operadora"] => string(1) "2" ["nao_recebida"] => string(1) "4" ["entregue_sem_confirmacao"] => string(1) "3" ["entregue_com_confirmacao"] => string(2) "25" ["cancelada"] => string(1) "0" ["total_enviado"] => string(2) "35" ["mes_ano"] => string(10) "Dez / 2017" ["opcoes"] => string(217) "<center><a href='/m/12/a/2017' title='Listar'</a></center>" } } Obrigado pela compreensão e leitura!
  6. diego.baiao

    [Resolvido] Relatorio com PHPExcel

    Só pra constar foi criado um servidor temporário para gerar esse relatório que não é nada viável o negocio é montar e gravar em um banco não relacional ex: mongo db e dele gerar o relatório conforme comentário do Almir Santos é uma alternativa. O bom mesmo que vi seria o cliente baixar e solicitar com o "Power BI" um amigo de trabalho mostrou e é uma ferramenta top sendo que ele baixa o power bi na maquina dele e configuramos para ele faça a chamada da requisição do relatório onde é baixado um arquivo na extensão do programa que ele abrirá no mesmo e terá todos os dados que ele precisa analítico e sintético e com vários gráficos. Agradeço a ajuda de todos, topico encerrado.!
  7. diego.baiao

    [Resolvido] Relatorio com PHPExcel

    Opa pessoal mudei o conceito da coisa de gerar em várias abas vai ser problemático acima de 1k de registros já se torna inviável para qualquer aplicação. Queria pegar o meu código abaixo e fazer o seguinte gerar para vários arquivos, exemplo meu $count deu 1,5k de registros, vou quebrar em cada arquivo 0,5k que daria um total de 3 arquivos com 0,5k . Até ai blz. Eu estou usando o XlsxWriter é bém fácil de usar e achei leve, para gerar um arquivo desse uso em media 400MB mais tenho um servidor potente e não vou ter problema com esse relatório não é todo cliente que gera 1,5k na verdade é somente 1 "muito chato"... Então simulando meu $count = 1500000; Preciso de um laço que independente do meu $count crie esses arquivos sem perder o fio da meada... "digo sendo continuo os registros no proximo arquivo" sem repetir os mesmos... ai vi alguns laços mais não consegui implementar while, for e if que usam o esquema de "break" e "continue" não sei se teria como usar esses karas para fazer o que quero. <?php ini_set("memory_limit", '2000M'); date_default_timezone_set('America/Sao_Paulo'); // ========== info de data e hora de inicio ===================== // $t = microtime(true); $micro = sprintf("%06d",($t - floor($t)) * 1000000); $d = new DateTime( date('Y-m-d H:i:s.'.$micro, $t) ); var_dump($d->format("Y-m-d H:i:s.u")); // ================================================ // echo "==============================================<br>"; // =============================================================== / require_once ('xlswriter/xlsxwriter.class.php'); require_once ('conexao.php'); //cria a conexao com o banco $conexao_pdo = new PDO("pgsql:host=$host dbname=$dbname user=$user password=$senha"); //laço para exibir se a conesão foi bem sucedida if ($conexao_pdo) { echo 'Conexão com o PostgreSQL realizada com sucesso!!<br>'; } else { echo 'Falha na conexão com o PostgreSQL!'; } //grava data e hora com milesegundo no arquivo que vai ser gerado $data_hora = date('d/m/Y H:i:s', time()); $microtime = microtime(true); $time = explode(".", $microtime); $mSecs = $time[1]; if (strlen($mSecs) == 3){ $mSecs = $mSecs."0"; }elseif (strlen($mSecs) == 2){ $mSecs = $mSecs."00"; } function limpaData($data_hora){ $rem = array ('-',':',' ','/','.'); $sub = array ('_','_','_','_','_'); return str_replace($rem, $sub, $data_hora); } $data = limpaData($data_hora)."_".$mSecs; //consulta via pdo $consulta = $conexao_pdo->query( "SELECT * FROM ENVIOS.ENVIO_CONTATO LIMIT 1500000" ); //muda o modo padrão de busca para um objeto PDOStatement $consulta->setFetchMode(PDO::FETCH_ASSOC); $count = $consulta->rowCount(); //pega o numero de registros na consulta (1,5k) exemplo dado //inicio do tratamento para gerar o arquivo xlsx if ($count > 0 ) { $array = array(); $sheet = 1; //esse kara nao influencia em nada //instancia a abertura de um documento novo xlsx $writer = new XLSXWriter(); $loop = null; while($row = $consulta->fetch()) { //Pega os dados da consulta e armazenas nas variaveis especificas dentro do array $array[$loop]["id"] = $row['id']; $array[$loop]["data_hora_execucao"] = $row['data_hora_execucao']; $array[$loop]["mensagem"] = $row['mensagem']; $array[$loop]["ddd_movel"] = $row['ddd_movel']; $array[$loop]["movel"] = $row['movel']; $array[$loop]["id_relatorio_status"] = $row['id_relatorio_status']; //Cria a head do excel - nomemclatura de cada coluna e o tipo de dado a se importar $writer->writeSheetHeader($sheet, array('id'=>'integer','data_hora_execucao'=>'datetime','mensagem'=>'string','ddd_movel'=>'integer','movel'=>'integer','id_relatorio_status'=>'integer')); //Grava o valor das celulas $writer->writeSheetRow($sheet, array($array[$loop]["id"],$array[$loop]["data_hora_execucao"],$array[$loop]["mensagem"],$array[$loop]["ddd_movel"],$array[$loop]["movel"],$array[$loop]["id_relatorio_status"] )); $loop ++; } //gera o arquivo xlsx baseado da interação do $writer->writeSheetRow $writer->writeToFile("periodo_" .$data. ".xlsx"); echo '#'.floor((memory_get_peak_usage())/1024/1024)."MB"."\n"; // so imprimo o consumo da memoria a fins informativos } echo "<br>"; // ========= info de data e hora de termino =================== // $t = microtime(true); $micro = sprintf("%06d",($t - floor($t)) * 1000000); $d = new DateTime( date('Y-m-d H:i:s.'.$micro, $t) ); var_dump($d->format("Y-m-d H:i:s.u")); // ================================================ // echo "==============================================<br>"; // =============================================================== / ?> Segue abaixo a print screen de saida. http://prntscr.com/hz4hk0 http://prntscr.com/hz4kwf Não sei se deu pra entender bem o que queria e se seria possível, senão vou ter que gravar no banco a consulta e marcar o registro inicio e final de cada arquivo a ser gerado.(e queria que fosse direto sem ter que usar este método)
  8. diego.baiao

    [Resolvido] Relatorio com PHPExcel

    Te agradeço mais não vou ter tempo de implementar algo com essa linguagem, mais pensei em outra maneira só estou enrolado com o código. Desisti da outra forma pois consome muita memoria, mais ao invés de quebrar em varias abas posso quebrar o processo por arquivo, já testei aqui vai ficar bom... só preciso de uma ajuda a modificar meu código nas interações quando atingir um certo limite de registros... vou posta abaixo.
  9. diego.baiao

    [Resolvido] Relatorio com PHPExcel

    Entendi vou ver se chego a alguma conclusão, como seu codigo Tinha perguntado sobre o banco eu uso "postgresql". (muitos inner joins hehehe)
  10. diego.baiao

    [Resolvido] Relatorio com PHPExcel

    Opa, só informando recebi varias ajudas dos amigo acima e agradeço a todos porem a necessidade é que crie um relatório em xlsx mesmo, o usuário faz o download do arquivo para usar filtros e afins... mais vi muitas reclamações que para gerar arquivos grandes o "PHP Excel não é tão bom e caiu em desuso, costuma dar erro e demora muito tendo o sucessor dele o spreadsheet " e procurando um pouco mais fundo descobri o "XLsxWriter" (https://github.com/mk-j/PHP_XLSXWriter) estou estudando ele e já consegui fazer grande parte, assim que finalizar o código inteiro eu posto para ajudar alguém que precise também. Já consigo gravar 1k (demora por volta de 6 a 7 minutos vai ser executado em segundo plano e ao terminar vai ser gerando um link para donwload a ideia é essa) vou fazer para gerar mais abas automaticamente e ver a parte de config de execução de script como memory_limit e max_execution_time Vi também o "spreadsheet" porém não achei muito exemplos de como usar e achei um pouco confuso as classes, eu não tenho tanta experiência por isso deve ter ficado confuso e com esse outro achei bem mais fácil e parece ser bem ágil conforme informações do git, os relatórios não irão passar tão cedo dos 5 milhões hoje fica em torno de 1,5k a 3,5k . Obrigado a todos
  11. diego.baiao

    [Resolvido] Relatorio com PHPExcel

    Opa obrigado, vou ler sobre, agora que iria voltar a implementação desse cara.
  12. diego.baiao

    [Resolvido] Relatorio com PHPExcel

    Opa segunda posto o resultado ainda não consegui mexer nesse código.
  13. diego.baiao

    [Resolvido] Relatorio com PHPExcel

    Show vou ver aqui e dou um feedback amanhã, 2018 começou bombando, sabia que estava perto rs... tenho que treinar linguagem O.O. faço tudo estruturado uma ou outra que faço com O.O. e pegar um pouco na lógica de programação, agradeço a tua ajuda vou tentar fazer o esquema aqui e te falo... vlw
  14. diego.baiao

    [Resolvido] Relatorio com PHPExcel

    Olá bom dia a todos! Pessoal preciso fazer um relatório que venha a gerar um arquivo xlsx automaticamente, de uma consulta do banco de dados, estou usando o "PHPEXcel" para isso. Tenho essa necessidade abaixo: >> Esse arquivo tem que gerar abas automaticamente quando o limite chegar a 1 milhão de linhas sabemos que o excel a partir de 2003 o limite de linhas por "planilha" ou "aba" é de "um milhão" 1k, estou arredondado para baixo, o certo é 1.048.576 linhas por 16.384 colunas por aba/planilha. Exemplo: Então resumindo vou tirar um relatório deu 3 milhões e meio de registros, serão 4 abas/planilhas, sendo 3 abas com um milhão cada e mais 1 aba com meio milhão. Sendo que ele deve fazer tudo sozinho se tiver 10 milhões e assim vai, eu consigo já gerar o arquivo com a consulta vindo do banco, mais não consigo gravar todas as linhas na tabela e muito menos fazer criar as abas automaticamente. *** estou seguindo essa referencia abaixo com uso no phpexcel, neste ensina o uso para criar novas "abas/planilhas" no arquivo a ser gerado mais não consigo colocar em pratica. (http://interessespessoais.com/programacaoweb/criar-varias-folhas-num-ficheiro-excel-com-a-classe-phpexcel/) Dados importantes: 1 - número de linhas por aba é 1 milhão de linhas; 2 - as colunas são fixas então nunca irá ter mais ou menos ao que já tem criado( vai da coluna "A" a "O' são 15 colunas o total); 3 - possui um cabeçalho fixo, vou deixar fictício esses dados não são relevantes ( serão eles mesmos "A', "B", "C" ... "O"). >> no código abaixo o cabeçalho vai ser sempre a primeira linha logo abaixo da coluna como fiz ali "A1" chamei de "id" seria a primeira delas. >> nesse caso para não ficar pesado a consulta e demora no resultado eu estou trazendo 15 linhas(registros) minha tentativa é gera 3 abas com 5 registros em cada uma delas. Dando certo ai mudo para a suposta quantidade de registros que queira alcançar. hehe Segue meu código abaixo já gerando o relatório porem com uma linha editada rs. "Mais ao menos gera no formato certo sem erros". <?php /* Rodando esta gravando o xlsx */ require_once "conexao.php"; require_once 'Classes/PHPExcel.php'; // DEFINE O FUSO HORARIO COMO O HORARIO DE BRASILIA date_default_timezone_set('America/Sao_Paulo'); //cria a conexao com o banco $conexao_pdo = new PDO("pgsql:host=$host dbname=$dbname user=$user password=$senha"); //laço para exibir se a conesão foi bem sucedida if ($conexao_pdo) { echo 'Conexão com o PostgreSQL realizada com sucesso!!<br>'; } else { echo 'Falha na conexão com o PostgreSQL!'; } // grava milesegundo no arquivo gerado $data_hora = date('d/m/Y H:i:s', time()); $microtime = microtime(true); $time = explode(".", $microtime); $mSecs = $time[1]; if (strlen($mSecs) == 3){ $mSecs = $mSecs."0"; }elseif (strlen($mSecs) == 2){ $mSecs = $mSecs."00"; } function limpaData($data_hora){ $rem = array ('-',':',' ','/','.'); $sub = array ('_','_','_','_','_'); return str_replace($rem, $sub, $data_hora); } $data = limpaData($data_hora)."_".$mSecs; //pega data e concatena com microsegundos //consulta via pdo // nesse caso para nao ficar pesado trago 15 linhas minha tentativa é gera 3 abas com 5 registros em cada uma delas $consulta = $conexao_pdo->query( "SELECT * FROM ENVIOS.ENVIO_CONTATO LIMIT 15" ); //muda o modo padrão de busca para um objeto PDOStatement $consulta->setFetchMode(PDO::FETCH_ASSOC); $count = $consulta->rowCount(); // pega o numero de registros na consulta if ($count > 0) { while($row = $consulta->fetch()) { // Criar um novo objecto PHPExcel $objPHPExcel = new PHPExcel(); // Inserir dados nas células A1 e A2 $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', 'id') ->setCellValue('A2', $row['id']); } } // // Indicação da criação do ficheiro $file = $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $file->save("downloads\periodo_" .$data. ".xlsx"); ?> O arquivo é gerado na pasta "downloads" dentro do projeto, porém com apenas 1 dado ( so fiz ele ir na primeira celular "A" e gravar um dado no caso um "id" da minha consulta, teria que fazer isso com o resto das informações, "B" os "nomes", "C" as "idades" e assim vai... não sei como fazer um loop nessa situação com foreach, while, for, etc... * O meu problema esta sendo mais com logica de programação vou estudar para ver se consigo ir adiante, mais se conseguirem derem uma força eu agradeço. Segue duas prints abaixo: 1 - do arquivo gerado >> http://prntscr.com/hv37mh 2 - do arquivo aberto >> http://prntscr.com/hv385u
×

Informação importante

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