Ir para conteúdo
Fórum Script Brasil
  • 0

Classes, Funções e FPDF


AndréSAP

Pergunta

Todos conhecem a classe FPDF. Pois bem, tenho que criar uma segunda classe com as funções Header() e Footer() (MeuPDF) e uma classe para gerar um relatorio (relatorio.php). Porem não consigo fazer ele gerar o relatorio como uma classe, apenas com um arquivo comum. Caso eu tente passa-lo para classe aparece o erro Parse error: parse error, expecting `T_FUNCTION' in H:\TCC\relatorio.php on line 8. Tenho que passar tupo para funções? Como?

Abaixo meus arquivos.

MeuPDF.php

<?php
define('FPDF_FONTPATH','rotinas/fpdf16/font/');
require('rotinas/fpdf16/fpdf.php');

class MeuPDF extends FPDF
{
//Page header
function Header()
{
    //Logo
    $this->Image('image/logo_pb.gif',10,5,50);
    //Arial bold 15
    $this->SetFont('Arial','B',15);
    //Move to the right
    $this->Cell(100);
    //Title
    $this->Cell(30,10,'Relatório de Atendimentos Loja SULINFO',0,0,'C');
    //Line break
    $this->Ln(20);    
    $this->SetTextColor(0,0,102);
    $this->Cell(0,1,'',1,0,'L');
}

//Page footer
function Footer()
{
    //Position at 1.5 cm from bottom
    $this->SetY(-15);
    //Arial italic 8
    $this->SetFont('Arial','I',8);
    //Page number
    $this->SetTextColor(0,0,102);
    $this->Cell(0,1,'',1,0,'L');
    $this->Ln(0);
    $this->Cell(0,10,'Página '.$this->PageNo(),0,0,'L');
    $this->Ln(0);
    $this->SetY(-10);
    $this->Cell(0,10,'SULINFO Soluções em Softwares - Santo Antônio da Patrulha - RS. Fone (51) 9757.3045',0,0,'L');
}
}
?>
relatorio.php
<?php
require('MeuPDF.php');

if (isset($_POST['envia'])){
if ($_POST['mes'] == 13) {
$where = "where data_atendimento like '".$_POST['ano']."-%-%'";
}
elseif ($_POST['ano'] == 13)  {
$where = "where data_atendimento like '%-".$_POST['mes']."-%'";
}
else {
$where = "where data_atendimento like '".$_POST['ano']."-".$_POST['mes']."-%'";
}

// bd funções para se conectar no banco de dados
$conexao = mysql_connect("localhost","root","");
if (!$conexao) echo "Não foi possível conectar ao MySQL <br />";
if (!mysql_select_db("sulinfo",$conexao)) echo "Não foi possível selecionar o banco <br />";
// busca os dados no banco de dados
$busca = mysql_query("select a.id_atendimento,c.nome as cliente, case when (p.nome is NULL or p.nome='') then '-' else p.nome end as produto, case when (s.nome is NULL or s.nome='') then '-' else s.nome end as servico, f.nome as funcionario, date_format(data_atendimento, '%d/%m/%Y') as data_atendimento, case when (p.valor is NULL or p.valor='') then '-' else p.valor end as valor_produto, case when (s.valor is NULL or s.valor='') then '-' else s.valor end as valor_servico from atendimentos a join clientes c on (c.id_cliente = a.id_cliente) left join produtos p on (p.id_produto = a.id_produto) left join servicos s on (s.id_servico = a.id_servico) left join funcionarios f on (f.id_funcionario = a.id_funcionario)".$where."");
mysql_set_charset("utf8");
if ((mysql_num_rows($busca))!=0){
$pdf = new MeuPDF();
$pdf->SetDrawColor(0,0,0);
$pdf->SetLineWidth(.5);
$pdf->Open();
$pdf->setAuthor('SulInfo');
$pdf->setTitle('Relatório de Atendimentos da Loja SulInfo');
$pdf->AddPage();
//Page header
$pdf->SetFont('Arial', 'B', 9);
$pdf->Ln(0);
$pdf->SetY(35);
$pdf->Cell(7);
$pdf->Cell(22, 5, 'Atendimento', 1, 0, 'C');
$pdf->Cell(50, 5, 'Nome', 1, 0, 'C');
$pdf->Cell(15, 5, 'Total', 1, 0, 'C');
$pdf->Cell(70, 5, 'Funcionário', 1, 0, 'C');
$pdf->Cell(20, 5, 'Data', 1, 0, 'C');

while ($resultado = mysql_fetch_array($busca)) {
$func = utf8_decode($resultado['funcionario']);
$cliente = utf8_decode($resultado['cliente']);

    $total = "R$ ".($resultado['valor_produto'] + $resultado['valor_servico']);
    $pdf->ln();
    $pdf->Cell(7);
    $pdf->Cell(22, 5, $resultado['id_atendimento'], 1, 0, 'C');
    $pdf->Cell(50, 5, $cliente, 1, 0, 'C');
    $pdf->Cell(15, 5, $total, 1, 0, 'C');
    $pdf->Cell(70, 5, $func, 1, 0, 'C');
    $pdf->Cell(20, 5, $resultado['data_atendimento'], 1, 0, 'C');
}
$pdf->Output();
mysql_close($conexao);
}
else {
echo "<center style='font-weight: bold; color:red; font-size: 13pt; font-family: Arial,serif;'>N&atilde;o existe registro para a busca</center><br>";
echo "<center><input type='button' onClick='java script:history.go(-1)' value='Voltar'></center>";
}
}
?>

Qualquer ajuda será bem-vinda.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Na classe MeuPDF (arquivo MeuPDF.php) quando você estiver utilizando alguma função da classe herdade (da classe FPDF), ao invés de utilizar o '$this' utilize 'parent::'. Exemplo:

Está assim:

$this->Image('image/logo_pb.gif',10,5,50);
Coloque assim:
parent::Image('image/logo_pb.gif',10,5,50);

Faz isso e vê se continua aparecendo o erro...

Qualquer caso, amanhã eu posso postar uma classe que eu fiz no meu serviço que faz o que você precisa, que é colocar um cabeçalho e rodapé...

obs: você já tentou utilizar a classe MPDF (uma extensão da FPDF)? Eu prefiro ela, pois ela aceita html, então o código fica beeeeem menor e muito mais fácil de fazer o layout do que com a função Cell do FPDF...

Link para o comentário
Compartilhar em outros sites

  • 0

Se você quer fazer o que seria o 'ideal', então terá que estudar orientação à objetos. Criar uma classe é simples, basta colocar o código entre o bloco 'class nomeClasse{ funções }' e depois instanciar esta classe, mas para fazer da forma correta há bastante teoria por trás... como herança, encapsulamento, polimorfismo, métodos mágicos e outros. Então se você quer fazer da forma 'ideal', estude orientação à objetos!

Link para o comentário
Compartilhar em outros sites

  • 0

Não vou usar polimorfismo porque essa classe seria a clase final. Nem herança, pois o que ela "herda" são somente as funções do MeuPDF. Encapsulamento pra que? Não vejo o porque do uso de getter e setter num select MySQL único, de uma CLASSE FINAL.

Mas já que ninguém pode me ajudar, (im)paciência.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...