PHP Script for Dynamic PDF Generation of Order Details

Database Connection and Query

This script generates a PDF report of orders by connecting to a MySQL database and fetching data. It uses the FPDF library for PDF creation.

First, it establishes a connection to the MySQL database:

require('AyudaPDF/fpdf/fpdf.php');

$dbc = mysqli_connect('localhost', 'root', 'root', 'birt') or die('Could not connect to the database: ' . mysqli_connect_error());

Then, it defines an SQL query to retrieve order details:

$sentencia = "SELECT orderNumber, orderDate, requiredDate, status, customerName FROM orders, customers WHERE orders.customerNumber = customers.customerNumber";

$resultado = mysqli_query($dbc, $sentencia);

PDF Class Definition

A custom PDF class extends the base FPDF class:

class PDF extends FPDF {

Footer Function

function Footer() {

  • $this->SetFont('Arial', '', 10);
  • $this->SetY(-15);
  • $this->Cell(0, 10, utf8_decode('Page ') . $this->PageNo(), 0, 0, 'R');
  • $this->SetY(-15);
  • $this->Cell(0, 10, utf8_decode('This is an IT example'), 0, 0, 'C');

}

Table Function

function tabla($datos) {

  • $this->SetFont('Arial', '', 20);
  • $this->SetFillColor(19, 184, 234);
  • $this->SetX(55);
  • $this->Cell(100, 15, utf8_decode("Order NÂș " . $datos[0]), 0, 1, "C", true);
  • $this->Ln();
  • $this->SetFont('Courier', 'B', 12);
  • $this->Cell(50, 10, utf8_decode("Order Date: "), 0, 0, "L");
  • $this->SetFont('Courier', '', 12);
  • $this->Cell(80, 10, utf8_decode($datos[1]), 0, 1, "R");
  • $this->SetFont('Courier', 'B', 12);
  • $this->Cell(50, 10, utf8_decode("Required Date: "), 0, 0, "L");
  • $this->SetFont('Courier', '', 12);
  • $this->Cell(80, 10, utf8_decode($datos[2]), 0, 1, "R");
  • $this->SetFont('Courier', 'B', 12);
  • $this->Cell(50, 10, utf8_decode("Status: "), 0, 0, "L");
  • $this->SetFont('Courier', '', 12);
  • $this->Cell(80, 10, utf8_decode($datos[3]), 0, 1, "R");
  • $this->SetFont('Courier', 'B', 12);
  • $this->Cell(50, 10, utf8_decode("Customer Name: "), 0, 0, "L");
  • $this->SetFont('Courier', '', 12);
  • $this->Cell(80, 10, utf8_decode($datos[4]), 0, 1, "R");
  • $this->Ln();

}

Table Header Function

function tabla_encabezado() {

  • $this->SetFont('Arial', 'B', 12);
  • $this->SetFillColor(19, 184, 234);
  • $this->Cell(25, 10, utf8_decode("Code"), 1, 0, "C", true);
  • $this->Cell(110, 10, utf8_decode("Name"), 1, 0, "C", true);
  • $this->Cell(20, 10, utf8_decode("Price"), 1, 0, "C", true);
  • $this->Cell(20, 10, utf8_decode("Quantity"), 1, 0, "C", true);
  • $this->Cell(15, 10, utf8_decode("Line"), 1, 0, "C", true);
  • $this->Ln();

}

Table Data Function

function tabla2($datos1) {

  • $this->SetFont('Courier', '', 12);
  • $this->Cell(25, 10, $datos1[0], 1, 0, "C");
  • $this->Cell(110, 10, $datos1[1], 1, 0, "C");
  • $this->Cell(20, 10, $datos1[2], 1, 0, "C");
  • $this->Cell(20, 10, $datos1[3], 1, 0, "C");
  • $this->Cell(15, 10, $datos1[4], 1, 0, "C");
  • $this->Ln();

}

}

PDF Generation

Finally, the script creates a PDF object, adds a page, and iterates through the query results to populate the PDF:

$pdf = new PDF();

$pdf->AddPage();

while ($row = mysqli_fetch_array($resultado)) {

  • $pdf->Ln();
  • $pdf->tabla($row);
  • $pdf->tabla_encabezado();
  • $sentencia2 = "SELECT products.productCode, productName, priceEach, quantityOrdered, orderLineNumber FROM orderdetails, products WHERE orderdetails.productCode = products.productCode AND orderNumber='$row[0]'";
  • $resultado2 = mysqli_query($dbc, $sentencia2);
  • while ($row2 = mysqli_fetch_array($resultado2)) {
  • $pdf->tabla2($row2);
  • }

}

$pdf->Output();

This script effectively demonstrates how to use PHP and the FPDF library to generate dynamic PDF reports from a MySQL database.