Jump to content
zulamon

Problema PHP + PDF

Recommended Posts

zulamon

Boa tarde, tenho pesquisado sobre este assunto faz já varios dias, e não estou a conseguir obter o que procuro.

Eu tenho uma listagem em php que me vai listar todos os artigos de uma tabela, nessa listagem queria um botão onde me fizesse a conversão daquela listagem para PDF, eu ja tenho uma biblioteca, mas mesmo assim não consigo que ele chame as variaveis, ao meter as variaveis ele da erro.

O codigo é o seguinte:

<?php
$html = '
<html>
<head></head>
<style>
.textos {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #666666;
}
.dados {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #009;
}
.tit_textos {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
color: #075507;
}
.nomes:link {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #666666;
text-decoration: none;
}
.nomes:visited {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #666666;
background-color: #CCFFFF;
display: block;
text-decoration: none;
}
.nomes:hover {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
display: block;
background-image: url(imagens/pontos.png);
text-decoration: none;
color: #F60;
}
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
</style>

<table width="100" border="0" cellspacing="10" cellpadding="5"  >
<tr>
<td>
<table width="100" border="1" cellspacing="0" cellpadding="1.5" >
<tr>
<td colspan="18" align="center"><strong>Lista dos Activos </strong> </td>
</tr>

<tr>
<td align="center" bgcolor="#66CC33"><strong>ID</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Data</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Delegação</strong></td>
<td align="center" bgcolor="#66CC33" ><strong>Referência</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Espaco do Edificio</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Tipo de Equipa</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Marca</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Descrição de Equipa</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Tipo de Acção</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Periocidade</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Executante</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Responsável</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Data manu</strong></td>
<td align="center" bgcolor="#DAEAFF" ><strong>Descr manu</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Anomlias</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Observação</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Alterar</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Imprimir</strong></td>
</tr>
<?php
while($rows=mysql_fetch_array($result)){



?>
<?php
}
?>

</table>
</td>
</tr>
</table>
<?php
mysql_close();
?>





</html>
';

?>
<?php
require_once("dompdf/dompdf_config.inc.php");
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->set_paper('letter', 'landscape');
$dompdf->render();
$dompdf->stream("exemplo-01.pdf");
?>

Como indico so consigo que me mostre a parte do cabeçalho no pdf.
Aqui eu queria colocar a parte das variaveis mas assim vai.me originar um erro, o codigo é o seguinte

<?php
while($rows=mysql_fetch_array($result)){

<tr>
<td><?php echo $rows['id']; ?></td>
<td><?php echo $rows['date']; ?></td>
<td><?php echo $rows['delegacao']; ?></td>
<td><?php echo $rows['referencia']; ?></td>
<td><?php echo $rows['espaedificio']; ?></td>
<td><?php echo $rows['tipequipa']; ?></td>
<td><?php echo $rows['marca']; ?></td>
<td><?php echo $rows['descrequipa']; ?></td>
<td><?php echo $rows['tipoaccao']; ?></td>
<td><?php echo $rows['periocidade']; ?></td>
<td><?php echo $rows['executante']; ?></td>
<td><?php echo $rows['responsavel']; ?></td>
<td><?php echo $rows['datamanu']; ?></td>
<td><?php echo $rows['descmanu']; ?></td>
<td><?php echo $rows['anomalias']; ?></td>
<td><?php echo $rows['obs']; ?></td>
</tr

?>

E ao ter isto assim da-me erro, agora coloco-lhe a pergunta se me pode dar uma opiniao de como e onde posso colocar as variaveis

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Olá zulamon,

Antes demais, por favor usa as tags code para demarcar código, assim fica mais fácil para ler.

Segundo, provavelmente será porque queres meter tags php dentro de uma string em php.... mas o melhor seria usares o buffer para isso, desta forma:

<?php
ob_start();
?>
<html>
<head></head>
<style>
.textos {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #666666;
}
.dados {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #009;
}
.tit_textos {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
color: #075507;
}
.nomes:link {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #666666;
text-decoration: none;
}
.nomes:visited {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #666666;
background-color: #CCFFFF;
display: block;
text-decoration: none;
}
.nomes:hover {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
display: block;
background-image: url(imagens/pontos.png);
text-decoration: none;
color: #F60;
}
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
</style>

<table width="100" border="0" cellspacing="10" cellpadding="5"  >
<tr>
<td>
<table width="100" border="1" cellspacing="0" cellpadding="1.5" >
<tr>
<td colspan="18" align="center"><strong>Lista dos Activos </strong> </td>
</tr>

<tr>
<td align="center" bgcolor="#66CC33"><strong>ID</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Data</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Delegação</strong></td>
<td align="center" bgcolor="#66CC33" ><strong>Referência</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Espaco do Edificio</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Tipo de Equipa</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Marca</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Descrição de Equipa</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Tipo de Acção</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Periocidade</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Executante</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Responsável</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Data manu</strong></td>
<td align="center" bgcolor="#DAEAFF" ><strong>Descr manu</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Anomlias</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Observação</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Alterar</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Imprimir</strong></td>
</tr>
<?php
while($rows=mysql_fetch_array($result)){
?>


<tr>
<td><?php echo $rows['id']; ?></td>
<td><?php echo $rows['date']; ?></td>
<td><?php echo $rows['delegacao']; ?></td>
<td><?php echo $rows['referencia']; ?></td>
<td><?php echo $rows['espaedificio']; ?></td>
<td><?php echo $rows['tipequipa']; ?></td>
<td><?php echo $rows['marca']; ?></td>
<td><?php echo $rows['descrequipa']; ?></td>
<td><?php echo $rows['tipoaccao']; ?></td>
<td><?php echo $rows['periocidade']; ?></td>
<td><?php echo $rows['executante']; ?></td>
<td><?php echo $rows['responsavel']; ?></td>
<td><?php echo $rows['datamanu']; ?></td>
<td><?php echo $rows['descmanu']; ?></td>
<td><?php echo $rows['anomalias']; ?></td>
<td><?php echo $rows['obs']; ?></td>
</tr>
<?php
}
?>
</table>
</td>
</tr>
</table>
</html>
<?php
$html = ob_get_clean();
mysql_close();

require_once("dompdf/dompdf_config.inc.php");
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->set_paper('letter', 'landscape');
$dompdf->render();
$dompdf->stream("exemplo-01.pdf");
?>

Ora experimenta

Share this post


Link to post
Share on other sites
zulamon

Dá erro...

Warning: mysql_close(): no MySQL-Link resource supplied in C:\xampp\htdocs\php\codigo\Novaesperiencia\class.php on line 113

Fatal error: Uncaught exception 'PDFlibException' with message 'Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\php\codigo\Novaesperiencia\class.php:113)' in C:\xampp\htdocs\php\codigo\Novaesperiencia\dompdf\include\pdflib_adapter.cls.php:833 Stack trace: #0 C:\xampp\htdocs\php\codigo\Novaesperiencia\dompdf\include\pdflib_adapter.cls.php(833): header('Cache-Control: ...') #1 C:\xampp\htdocs\php\codigo\Novaesperiencia\dompdf\include\dompdf.cls.php(447): PDFLib_Adapter->stream('exemplo-01.pdf', NULL) #2 C:\xampp\htdocs\php\codigo\Novaesperiencia\class.php(120): DOMPDF->stream('exemplo-01.pdf') #3 {main} thrown in C:\xampp\htdocs\php\codigo\Novaesperiencia\dompdf\include\pdflib_adapter.cls.php on line 833

Share this post


Link to post
Share on other sites
zulamon

Tipo eu já consigo que ele mostre no pdf a parte de cima do menu, agora falta a parte das variaveis!...

Share this post


Link to post
Share on other sites
filiperainho

Onde estas a fazer o Select à base de dados ?


Programador - C# ; C ; PHP ; JavaScript ; CSS ; HTML ; iniciante em Android.

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Dá erro...

Warning: mysql_close(): no MySQL-Link resource supplied in C:\xampp\htdocs\php\codigo\Novaesperiencia\class.php on line 113

Fatal error: Uncaught exception 'PDFlibException' with message 'Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\php\codigo\Novaesperiencia\class.php:113)' in C:\xampp\htdocs\php\codigo\Novaesperiencia\dompdf\include\pdflib_adapter.cls.php:833 Stack trace: #0 C:\xampp\htdocs\php\codigo\Novaesperiencia\dompdf\include\pdflib_adapter.cls.php(833): header('Cache-Control: ...') #1 C:\xampp\htdocs\php\codigo\Novaesperiencia\dompdf\include\dompdf.cls.php(447): PDFLib_Adapter->stream('exemplo-01.pdf', NULL) #2 C:\xampp\htdocs\php\codigo\Novaesperiencia\class.php(120): DOMPDF->stream('exemplo-01.pdf') #3 {main} thrown in C:\xampp\htdocs\php\codigo\Novaesperiencia\dompdf\include\pdflib_adapter.cls.php on line 833

Conforme o filiperainho respondeu (ou melhor, perguntou):

Onde estas a fazer o Select à base de dados ?

É que esse erro está a aparecer porque te falta o código que faz a ligação à base de dados. Exemplo:

mysql_connect("localhost","user","password") or die("Nao tem ligação");
mysql_select_db("base_de_dados") or die("Nao tem base de dados disponivel");

Share this post


Link to post
Share on other sites
zulamon

olha eu vou meter aqui o ficheiro onde mostra a listagem, é essa listagem que quero que apareca em pdf, se puder alterar alguma coisa agradecia sff..

Codigo:

<?php 
include("ligacao.php");	
// Ficheiro para fazer a ligação com a BD

/* identificação das variaveis */
$tbl_name = "activos"; // Nome Tabela
$db_name = "bd_activos"; // Base dados

mysql_select_db("$db_name")or die("Erro ao abrir BASE DADOS");
$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Gestão Activos</title>
<style type="text/css">

.textos {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #666666;
}
.dados {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #009;
}
.tit_textos {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
color: #075507;
}
.nomes:link {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #666666;
text-decoration: none;
}
.nomes:visited {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #666666;
background-color: #CCFFFF;
display: block;
text-decoration: none;
}
.nomes:hover {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
display: block;
background-image: url(imagens/pontos.png);
text-decoration: none;
color: #F60;
}
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
</style>
</head>




<table width="1202" border="0" cellspacing="10" cellpadding="10"  >
<tr>
<td>
<table width="1218" border="1" cellspacing="0" cellpadding="3" >
<tr>
<td colspan="19" align="center"><strong>Lista dos Activos </strong> </td>
</tr>

<tr>
<td align="center" bgcolor="#66CC33"><strong>ID</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Data</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Delegação</strong></td>
<td align="center" bgcolor="#66CC33" ><strong>Referência</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Espaco do Edificio</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Tipo de Equipa</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Marca</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Descrição de Equipa</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Tipo de Acção</strong></td>
<td align="center" bgcolor="#66CC33"><strong>Periocidade</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Executante</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Responsável</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Data manu</strong></td>
<td align="center" bgcolor="#DAEAFF" ><strong>Descr manu</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Anomlias</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Observação</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>Alterar</strong></td>
<td align="center" bgcolor="#DAEAFF"><strong>PDF</strong></td>

</tr>
<?php
while($rows=mysql_fetch_array($result)){
?>

<tr>
<td><?php echo $rows['id']; ?></td>
<td><?php echo $rows['date']; ?></td>
<td><?php echo $rows['delegacao']; ?></td>
<td><?php echo $rows['referencia']; ?></td>
<td><?php echo $rows['espaedificio']; ?></td>
<td><?php echo $rows['tipequipa']; ?></td>
<td><?php echo $rows['marca']; ?></td>
<td><?php echo $rows['descrequipa']; ?></td>
<td><?php echo $rows['tipoaccao']; ?></td>
<td><?php echo $rows['periocidade']; ?></td>
<td><?php echo $rows['executante']; ?></td>
<td><?php echo $rows['responsavel']; ?></td>
<td><?php echo $rows['datamanu']; ?></td>
<td><?php echo $rows['descmanu']; ?></td>
<td><?php echo $rows['anomalias']; ?></td>
<td><?php echo $rows['obs']; ?></td>

<td align="center"><a href="update.php?id=<?php echo $rows['id']; ?>">Alterar</a></td>
<td align="center"><a href="class.php?id=<?php echo $rows['id']; ?>">Imprimir</a></td>

</tr>
<?php
}
?>

</table>
</td>
</tr>
</table>
<?php
mysql_close();
?>

APARTE: Usa o Geshi, torna o post mais apresentável. :P

Share this post


Link to post
Share on other sites
filiperainho

Conforme o filiperainho respondeu (ou melhor, perguntou):

É que esse erro está a aparecer porque te falta o código que faz a ligação à base de dados. Exemplo:

mysql_connect("localhost","user","password") or die("Nao tem ligação");
mysql_select_db("base_de_dados") or die("Nao tem base de dados disponivel");

E alem disso ainda tens de meter:

$sql = "Select * From NomeDaTabela";
$result= mysql_query($sql) or die(mysql_error());


Programador - C# ; C ; PHP ; JavaScript ; CSS ; HTML ; iniciante em Android.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.