我找不到一个体面的教程,用于使用fpdf创建表并从mysql数据库中获取数据。我只是想知道如何创建一个。我在网上试用样本时遇到了很多错误。
例如,我有列,名字,中间名,姓氏,年龄和电子邮件。
如何使用fpdf创建表并回显数据库中的条目?
答案 0 :(得分:6)
在FPDF网站上阅读并关注 tutorial 可能是个不错的开始。
假设您有一个表(让我们称之为people
)并像这样采样数据
CREATE TABLE People
(id int,
first_name varchar(5),
middle_name varchar(4),
last_name varchar(5),
age int,
email varchar(15));
INSERT INTO People
(id, first_name, middle_name, last_name, age, email)
VALUES
(1, 'Jhon', NULL, 'Doe', 27, 'jhon@email.com'),
(2, 'Mark', 'J', 'Lee', 35, 'mark@email.com'),
(3, 'Helen', 'P', 'Smith', 30, 'helen@email.com');
这是一个基本的php脚本,可以满足您的需求。 注意:代码缺少任何错误处理,为了简洁起见。
<?php
require('fpdf.php');
class People {
public function all() {
try {
$db = new PDO('mysql:host=localhost;dbname=test;charset=UTF-8', 'user', 'password');
$query = $db->prepare("SELECT first_name, middle_name, last_name, age, email FROM people ");
$query->execute();
$people = $query->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
//echo "Exeption: " .$e->getMessage();
$result = false;
}
$query = null;
$db = null;
return $people;
}
}
class PeoplePDF extends FPDF {
// Create basic table
public function CreateTable($header, $data)
{
// Header
$this->SetFillColor(0);
$this->SetTextColor(255);
$this->SetFont('','B');
foreach ($header as $col) {
//Cell(float w [, float h [, string txt [, mixed border [, int ln [, string align [, boolean fill [, mixed link]]]]]]])
$this->Cell($col[1], 10, $col[0], 1, 0, 'L', true);
}
$this->Ln();
// Data
$this->SetFillColor(255);
$this->SetTextColor(0);
$this->SetFont('');
foreach ($data as $row)
{
$i = 0;
foreach ($row as $field) {
$this->Cell($header[$i][1], 6, $field, 1, 0, 'L', true);
$i++;
}
$this->Ln();
}
}
}
// Column headings
$header = array(
array('First Name', 30),
array('Middle Name', 30),
array('Last Name', 30),
array('Age', 12),
array('Email', 47)
);
// Get data
$people = new People();
$data = $people->all();
$pdf = new PeoplePDF();
$pdf->SetFont('Arial', '', 12);
$pdf->AddPage();
$pdf->CreateTable($header,$data);
$pdf->Output();
确保更改连接字符串
$db = new PDO('mysql:host=localhost;dbname=test;charset=UTF-8', 'user', 'password');
^^^^^^^^^ ^^^^ ^^^^ ^^^^^^^^
答案 1 :(得分:0)