2013-05-23 4 views
2

필자는 인터넷을 돌아 다녔지 만 fpdf를 사용하여 테이블을 만들고 mysql 데이터베이스에서 데이터를 가져 오는 데 적합한 튜토리얼을 찾을 수없는 것 같습니다. 나는 그것을 창조하는 방법을 알고 싶다. 필자는 웹에서 샘플을 시험해 본 결과 많은 오류가 발생했습니다.PHP - 기본 테이블 생성 fpdf

나는 php와 fpdf에 아직 익숙하지 않으므로 나와 양장 해주세요. 도와주세요!

예를 들어 나는 열, 이름, 중간 이름, 성, 나이 및 전자 메일이 있습니다.

fpdf를 사용하여 테이블을 만들고 데이터베이스의 항목을 에코하려면 어떻게해야합니까?

답변

6

FPDF 사이트의 tutorial을 읽고 따라가는 것이 좋습니다.

다음은이

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]'); 

처럼 (people를 호출 할 수 있습니다) 테이블을 가지고 있다고 가정 및 샘플 데이터 것은 당신이 원하는 것을 할 기본적인 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(); 

확인 위층 답변이 문제의 주요 원인에 대한 좋은,하지만, 대신 FPDF의 TCPDF을 채택하는 것이 좋습니다 연결 문자열을

$db = new PDO('mysql:host=localhost;dbname=test;charset=UTF-8', 'user', 'password'); 
          ^^^^^^^^^  ^^^^     ^^^^ ^^^^^^^^ 
+0

tnx 메이트, 마지막으로, 현재 피플 테이블 바로 아래에서 동일한 fpdf 페이지에 보조 테이블을 추가하려면 어떻게해야합니까? 예를 들어 주소 표. – reggel

+0

@reggel 안녕하세요. 당신은 정확히 같은 방식으로 그렇게합니다. 예제를 통해 데이터를 검색하는 메소드로'Address' 클래스를 구현하고, 주소 테이블을 생성하는 새로운 메소드 (CreateAddressTable 등)를 수용하도록'PeoplePDF' 클래스를 수정하고, 새로운 테이블에 대한 헤더 정보를 담기위한 배열을 정의하고, 행동 양식. – peterm

+0

tnx alot a mate u는 나에게 많은 머리를주었습니다 ... – reggel

0

을 변경해야합니다 첫 번째 때문에 두 번째 것보다 빠르며 매우 큰 파일을 생성하려는 경우 (데이터베이스에서 찾을 행 수를 고려한) TCPDF은 매우 우수한 성능을 나타냅니다. Zend_PDF 모듈도 사용하십시오. 첫 번째로 충격을 가하면 다른 모듈을 사용하는 것이 더 어렵지만, 현재로서는 가장 빠른 라이브러리입니다. 내 opinio 그쪽으로, 만약 당신이 언급 한 경우에, 당신은 zend_pdf 및 Zend_DB easly 모든 일을 사용하여 더 큰 클래스 (OOP 프로그래밍)을 만들 수 있습니다.