Ben Wijaya
Ben Wijaya

Reputation: 35

How to make table header and table footer appear on each page?

The table footer and header only appear at the beginning and at the end of the page. I'm using FPDF.

This is the code:

$pdf = new myPDF();    
$pdf->AliasNbPages('{nb}');    
$pdf->AddPage('L', 'A4', 0);    
$pdf->headerTable();    
$pdf->viewTable($con);    
$pdf->footerTable();    
$pdf->Output();

This is myPDF class:

<?php
$con = new PDO('mysql:host=localhost;dbname=db_tc', 'root', '');
require('function.php');
require('fpdf/fpdf.php');

class myPDF extends FPDF
{
    function header()
    {
        $this->SetleftMargin(30);
        $this->SetFont('Times', 'B', 14);
        $this->Cell(0, 10, 'Office 1', 0, 0, 'C');
        $this->Ln(20);

    }
    function footer()
    {
        $this->SetY(-15);
        $this->SetFont('Times', '', 8);
        $this->Cell(0, 10, 'Page ' . $this->PageNo() . '/{nb}', 0, 0, 'C');
    }
    function headerTable()
    {
        $this->SetleftMargin(20);
        $this->SetFillColor(255, 213, 31);
        $this->SetDrawColor(50, 50, 100);
        $this->SetFont('Times', 'B', 12);
        $this->Cell(15, 10, 'Nomor', 1, 0, 'C', true);
        $this->Cell(40, 10, 'Tanggal Cek', 1, 0, 'C', true);
        $this->Cell(40, 10, 'Type Unit', 1, 0, 'C', true);
        $this->Cell(40, 10, 'Serial Number', 1, 0, 'C', true);
        $this->Cell(40, 10, 'Serial Number2', 1, 0, 'C', true);
        $this->Cell(30, 10, 'Lokasi', 1, 0, 'C', true);
        $this->Cell(30, 10, 'Ruangan', 1, 0, 'C', true);
        $this->Ln();
    }
    function footerTable()
    {
        $this->SetleftMargin(30);
        $this->SetFillColor(255, 213, 31);
        $this->SetDrawColor(50, 50, 100);
        $this->SetFont('Times', 'B', 12);
        $this->Cell(15, 10, 'Nomor', 1, 0, 'C', true);
        $this->Cell(40, 10, 'Tanggal Cek', 1, 0, 'C', true);
        $this->Cell(40, 10, 'Type Unit', 1, 0, 'C', true);
        $this->Cell(40, 10, 'Serial Number', 1, 0, 'C', true);
        $this->Cell(40, 10, 'Serial Number2', 1, 0, 'C', true);
        $this->Cell(30, 10, 'Lokasi', 1, 0, 'C', true);
        $this->Cell(30, 10, 'Ruangan', 1, 0, 'C', true);
        $this->Ln();
    }
    function viewTable($con)
    {
        $this->SetleftMargin(30);
        $this->SetFont('Times', '', 12);
        $this->SetFillColor(224, 224, 224);
        $stmt = $con->query("SELECT * FROM officepakai");
        while ($data = $stmt->fetch(PDO::FETCH_OBJ)) {
            $this->Cell(15, 10, $data->Nomor, 1, 0, 'C', true);
            $this->Cell(40, 10, $data->Tanggal_Cek, 1, 0, 'L', true);
            $this->Cell(40, 10, $data->Type_Unit, 1, 0, 'L', true);
            $this->Cell(40, 10, $data->Serial_Number, 1, 0, 'L', true);
            $this->Cell(40, 10, $data->Serial_Number2, 1, 0, 'L', true);
            $this->Cell(30, 10, $data->Lokasi, 1, 0, 'L', true);
            $this->Cell(30, 10, $data->Ruangan, 1, 0, 'L', true);
            $this->Ln();
        }
    }
}
$pdf = new myPDF();
$pdf->AliasNbPages('{nb}');
$pdf->AddPage('L', 'A4', 0);
$pdf->headerTable();
$pdf->viewTable($con);
$pdf->footerTable();
$pdf->Output();

?>

Upvotes: 2

Views: 330

Answers (1)

alariva
alariva

Reputation: 2139

I haven't worked with this lib but as per it's documentation here I'd say only Header and Footer methods are being called, but you seem to have some customizations called headerTable and footerTable.

The Header() and Footer() methods are called automatically, so I believe that calling the custom methods inside them should do the trick:

function Header()
{
    $this->SetleftMargin(30);
    $this->SetFont('Times', 'B', 14);
    $this->Cell(0, 10, 'Office 1', 0, 0, 'C');
    $this->Ln(20);
    $this->headerTable(); // add this
}

function Footer()
{
    $this->SetY(-15);
    $this->SetFont('Times', '', 8);
    $this->Cell(0, 10, 'Page ' . $this->PageNo() . '/{nb}', 0, 0, 'C');
    $this->footerTable(); // add this
}

Upvotes: 1

Related Questions