Diogo Freitas Postado Julho 27, 2010 Denunciar Share Postado Julho 27, 2010 Boas,Tenho a necessidade de imprimir dados provenientes de uma DB num ficheiro PDF.Trata-se de uma folha de nota de encomenda.Após a confirmação da encomenda por parte do cliente, abre-se uma folha de pdf com a encomenda do cliente.porém, estou com dificuldades em imprimir a informação proveniente da DB e de $_SESSION.O código está em baixo:<?php include "../valida_session2.php"; require_once('config/lang/eng.php'); require_once('tcpdf.php'); $login = $_SESSION['login_usuario']. "\n"; $id = $_SESSION['id_usuario']. "\n"; $qtd_19l = $_SESSION['qtd_19l']. "\n"; $qtd_14l = $_SESSION['qtd_14l']. "\n"; $qtd_copos = $_SESSION['qtd_copos']. "\n"; $qtd_cxcafe = $_SESSION['qtd_cxcafe']. "\n"; $qtd_cxdcafe = $_SESSION['qtd_cxdcafe']. "\n"; $qtd_kitt = $_SESSION['qtd_kitt']. "\n"; // cria um novo documento PDF $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); // seta as informações do documento (ex. Autor, Título, Assunto e Palavras Chave) // OBS.: Se você quiser colocar o nome do autor, por exemplo, pode preencher o campo abaixo - dentro da aspas $pdf->SetCreator(PDF_CREATOR); $pdf->SetAuthor(''); $pdf->SetTitle(''); $pdf->SetSubject(''); $pdf->SetKeywords(''); // seta o que entrará dentro de Header (em meu caso, disponibilizei uma imagem) $pdf->SetHeaderData(PDF_HEADER_LOGO); // seta as fontes usadas no Header e no Rodapé $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); // seta as fontes que entraram como monospace $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); //seta as margens $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); $pdf->SetHeaderMargin(PDF_MARGIN_HEADER); $pdf->SetFooterMargin(PDF_MARGIN_FOOTER); //seta o break automático feito na página $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); //set image scale factor $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); //set some language-dependent strings $pdf->setLanguageArray($l); // --------------------------------------------------------- // seta a fonte usada no documento (em meu caso, estou usando a Helvetica tamanho 10) $pdf->SetFont('helvetica', '', 10); // Adiciona uma página $pdf->AddPage(); // Texto usado na página $html = '<h1>Encomenda nº $login</h1><p> <div align="center"> <table width="429"> <tr> <td width="314"><strong>Produtos</strong></td> <td width="103"><strong>Quantidade</strong></td> </tr> <tr> <td width="314">Garrafão AquaMaster 18.9L</td> <td width="103"><strong><div align="center"><? $_SESSION["qtd_19l"];?></div></strong></td> </tr> <tr> <td>Garrafão AquaMaster 12L</td> <td><strong><div align="center"><? $_SESSION["qtd_14l"];?></div></strong></td> </tr> <tr> <td>Mangas de copos c/ 100</td> <td><strong><div align="center"><? $_SESSION["qtd_copos"];?></div></strong></td> </tr> <tr> <td>Kit café Incoffee c/ 150</td> <td><strong><div align="center"><? $_SESSION["qtd_cxcafe"];?></div></strong></td> </tr> <tr> <td>Kit descafé Incoffee c/ 150</td> <td><strong><div align="center"><? $_SESSION["qtd_cxdcafe"];?></div></strong></td> </tr> <tr> <td>Kit térmico c/ 150</td> <td><strong><div align="center"><? $_SESSION["qtd_kitt"];?></div></strong></td> </tr> </table> </div> <p>'; $html2 = utf8_encode($html); // Imprime o conteúdo do documeto $pdf->writeHTML($html2, true, false, true, false, ''); // Reseta a partir deste ponto, para partir para a outra página $pdf->lastPage(); // Fecha o documento e imprime o PDF $pdf->Output('webmaster.pt.pdf', 'I'); ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 *FIT* Postado Julho 27, 2010 Denunciar Share Postado Julho 27, 2010 Qual a dificuldade? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diogo Freitas Postado Julho 27, 2010 Autor Denunciar Share Postado Julho 27, 2010 Depois de testar várias vezes tenho a consciência que o erro está no código html.O que está mal?abraço$html = '<h1>Encomenda nº $login</h1><p> <div align="center"> <table width="429"> <tr> <td width="314"><strong>Produtos</strong></td> <td width="103"><strong>Quantidade</strong></td> </tr> <tr> <td width="314">Garrafão AquaMaster 18.9L</td> <td width="103"><strong><div align="center"><? $_SESSION["qtd_19l"];?></div></strong></td> </tr> <tr> <td>Garrafão AquaMaster 12L</td> <td><strong><div align="center"><? $_SESSION["qtd_14l"];?></div></strong></td> </tr> <tr> <td>Mangas de copos c/ 100</td> <td><strong><div align="center"><? $_SESSION["qtd_copos"];?></div></strong></td> </tr> <tr> <td>Kit café Incoffee c/ 150</td> <td><strong><div align="center"><? $_SESSION["qtd_cxcafe"];?></div></strong></td> </tr> <tr> <td>Kit descafé Incoffee c/ 150</td> <td><strong><div align="center"><? $_SESSION["qtd_cxdcafe"];?></div></strong></td> </tr> <tr> <td>Kit térmico c/ 150</td> <td><strong><div align="center"><? $_SESSION["qtd_kitt"];?></div></strong></td> </tr> </table> </div> <p>'; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 *FIT* Postado Julho 27, 2010 Denunciar Share Postado Julho 27, 2010 Bom, mas qual o erro que ocorre? Fica meio complicado ajudar sem saber o que está acontecendo.Mas mesmo assim vamos lá ;)Você está usando isso para escrever as sessões:<? $_SESSION["qtd_19l"];?> Pelo que entendi você está montando a variavel $html, ou seja, já está dentro do PHP, sendo assim, qual a finalidade de abrir e fechar as tags php para escrever a sessão? E outra dica, procure "quebrar" o echo para escrever sessões, exemplo. <td width="103"><strong><div align="center">'.$_SESSION["qtd_19l"].'</div></strong></td> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diogo Freitas Postado Julho 27, 2010 Autor Denunciar Share Postado Julho 27, 2010 não aparece erro...O pdf é criado e o texto também aparece correctamente. O problema é que o que vem das $_SESSION não aparece.O código está desta forma e mesmo assim não dá:$login = $_SESSION['login_usuario']. "\n"; $id = $_SESSION['id_usuario']. "\n"; $qtd_19l = $_SESSION['qtd_19l']. "\n"; $qtd_14l = $_SESSION['qtd_14l']. "\n"; $qtd_copos = $_SESSION['qtd_copos']. "\n"; $qtd_cxcafe = $_SESSION['qtd_cxcafe']. "\n"; $qtd_cxdcafe = $_SESSION['qtd_cxdcafe']. "\n"; $qtd_kitt = $_SESSION['qtd_kitt']. "\n"; // Texto usado na página $html = ' <html> <body> <h1>Encomenda nº '.$login.'</h1><p> <div align="center"> <table width="429"> <tr> <td width="314"><strong>Produtos</strong></td> <td width="103"><strong>Quantidade</strong></td> </tr> <tr> <td width="314">Garrafão AquaMaster 18.9L</td> <td width="103"><strong><div align="center">'.$qtd_19l.'</div></strong></td>já está a funcionar...muito obrigadopara resolver o problema bastou fazer '.$_SESSION['login_usuario'].'Um abraço e muito obrigadojá agora, se puder tirar-me outra dúvida....Este pdf é para uma nota de encomenda a qual terá que ter um numero sempre diferente...Uma das possibilidades poderia ser criar uma base de dados só para as encomendas e então gerar um id com auto_incrementeContudo, acho que pode ser mais fácil fazer da seguinte forma.....se eu der como numero da encomenda o nome do cliente (o qual vou buscar através do $_SESSION) seguido da data do dia em que a encomenda é feita...O meu problema é como colocar a data....entende o que digo?Seria qualquer coisa como: $_SESSION['login_usuario'] e depois?..... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 *FIT* Postado Julho 27, 2010 Denunciar Share Postado Julho 27, 2010 Bom, a sua idéia até que é boa, e se realmente quiser fazer assim eu te ajudo a colocar a data.Mas digamos que o mesmo cliente faz 2 encomendas no mesmo dia?O número ficará igual, a saída usando esse mesmo raciocinio, é acrescentar a hora também, porém ficaria um número muito grande, acho que a idéia de gerar o id com auto_increment e salvar na base é mais viavel e mais segura. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diogo Freitas Postado Julho 27, 2010 Autor Denunciar Share Postado Julho 27, 2010 Eu penso que a ideia de colocar data e hora seria mais interessante por dois motivos:Para não sobrecarregar a base de dados (o pdf é apenas para o cliente uma vez que a empresa não tem necessidade do mesmo)A encomenda vai ser enviada em html simples para o email da empresa pelo que guardar o pdf na DB seria um desperdicio de espaçoEntende?O numero não tem grande importânciaComo faria isso então? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 *FIT* Postado Julho 27, 2010 Denunciar Share Postado Julho 27, 2010 Sendo assim, sem problemas, apenas utilize a função date() do php e concatene o valor recebido com o valor da sessão.Exemplo:$diaHora = date("YmdHis"); $numero = $_SESSION['login_usuario'].$diaHora; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diogo Freitas Postado Julho 27, 2010 Autor Denunciar Share Postado Julho 27, 2010 obrigado FITUm abração Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Diogo Freitas
Boas,
Tenho a necessidade de imprimir dados provenientes de uma DB num ficheiro PDF.
Trata-se de uma folha de nota de encomenda.
Após a confirmação da encomenda por parte do cliente, abre-se uma folha de pdf com a encomenda do cliente.
porém, estou com dificuldades em imprimir a informação proveniente da DB e de $_SESSION.
O código está em baixo:
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.