2013-05-23 3 views
2

Я путешествовал по сети, но, похоже, я не могу найти достойные учебники для создания таблиц с использованием fpdf и получения данных из базы данных mysql. Я просто хочу знать, как его создать. У меня было много ошибок для пробных образцов в Интернете.PHP - создание основной таблицы fpdf

Я все еще новичок в php и fpdf, поэтому, пожалуйста, со мной. Пожалуйста помоги!

Например, у меня есть столбцы, имя, отчество, фамилия, возраст и электронная почта.

Как создать таблицу с использованием fpdf и повторить записи из базы данных?

ответ

6

Чтение и последующие tutorial на сайте FPDF может быть хорошим началом.

Если предположить, что у вас есть таблица (позволяет называть его 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, '[email protected]'), 
    (2, 'Mark', 'J', 'Lee', 35, '[email protected]'), 
    (3, 'Helen', 'P', 'Smith', 30, '[email protected]'); 

Вот основной скрипт, который делать то, что вы хотите. Примечание: код не требует обработки ошибок для краткости.

<?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'); 
          ^^^^^^^^^  ^^^^     ^^^^ ^^^^^^^^ 
+0

tnx mate, последнее, как добавить дополнительную таблицу на той же странице fpdf прямо под текущей таблицей People? например, в адресной таблице. – reggel

+0

@reggel Добро пожаловать. Вы делаете это точно так же. Следуя моему примеру, реализуем класс «Адрес» с методом извлечения данных, модифицируем класс «PeoplePDF» для размещения нового метода (например, CreateAddressTable) для генерации таблицы адресов, определите массив для хранения информации заголовка для новой таблицы и, наконец, используйте эти новые методы. – peterm

+0

tnx alot mate u дал мне много начального старта ... – reggel

0

Наверху ответы хороши для главной причиной вашей проблемы, но я предлагаю вам принять TCPDF вместо FPDF, так как первый быстрее, чем второй, и если вы собираетесь создать очень большой файл (учитывая количество строк, которое вы узнаете из вашей базы данных) TCPDF как очень хорошая производительность. Рассмотрите также использовать модуль Zend_PDF, который при первом ударе труднее использовать, чем другие, но является самой быстрой библиотекой на данный момент. Мое мнениео это, если вы в том случае, о котором я упомянул, вы можете создать более крупный класс (в программировании ООП), который использует zend_pdf и Zend_DB и легко выполнит всю работу.

Смежные вопросы