2012-11-22 66 views
0

我試圖用FPDF類生成pdf,但是我遇到的問題是如何傳遞從mysql數據庫中提取的變量數據(查詢數據存儲在一個數組)生成pdf。如何將數組中的可變數據傳遞到fpdf php

這裏是爲了生成PDF

 <?php 
     @include_once("includes/db.php"); 
     require('fpdf/fpdf.php'); 
     @include_once("includes/course_info_query.php"); 

     $obj = new trainingCourses(); 
     $course_details = array(); 
     if(isset($_GET['c_id'])){ 
       $course_details = $obj->getPubCourseDetails($_GET['c_id']); 
     } 




     class PDF extends FPDF 
     { 


    public $course_details; 

    public function setData($input){ 
     $this->course_details = $input; 
    } 


     function Header() 
     { 
      // Logo 
      $this->Image('s_pdf_logo.png',10,6,30); 
      // Arial bold 15 
      $this->SetFont('Arial','B',20); 
      // Move to the right 
      $this->Cell(40);  
      // Title 
      $this->Cell(30,10,$this->course_details['comp_name']); 
      // Draw an header line 
      $this->Line(10,26,200,26); 
      // Line break 
      $this->Ln(20); 
     } 

     function Footer() 
     { 
      // Position at 1.5 cm from bottom 
      $this->SetY(-15); 

      // Begin with regular font 
      $this->SetFont('Arial','',9); 
      // Then put a blue underlined link 
      //$this->SetTextColor(0,0,255); 
      $this->SetFont('','U'); 
      $this->Write(10,$this->course_details['comp_name'],'http://www.skills.com'); 
      // Arial italic 8 
      $this->SetFont('Arial','I',9); 
      // Page number 
      $this->Cell(0,10,'Page '.$this->PageNo().' ',0,0,'R'); 
     } 


     function BodyTop() 
     { 
     // Course title cell 
     $this->Cell('',10,'',0,0,'C'); 
     $this->Ln(); 

     /* Build cells for the first row */ 

     $this->SetFont('Arial','',10); 
     $this->SetY(40); 

     // First Row 
     $this->Cell(35,8,'Starting Date : ',0,0,'L'); 
     $this->Cell(30,8,$this->course_details['event_date'],0,0,'C'); 
     $this->SetX(150); 
     $this->Cell(25,8,'Course Fee : ',0,0,'L'); 
     $this->Cell(20,8,$this->course_details['fee'],0,0,'C'); 
     $this->Ln(); 

     // Second Row 
     $this->Cell(35,8,'Seating Capacity : ',0,0,'L'); 
     $this->Cell(30,8,$this->course_details['sit_capacity'],0,0,'L'); 
     $this->SetX(150); 
     $this->Cell(25,8,'Duration : ',0,0,'L'); 
     $this->Cell(20,8,$this->course_details['duration'].' Day(s)',0,0,'L'); 
     $this->Ln(); 

     // Third Row 
     $this->Cell(35,8,'Venue : ',0,0,'L'); 
     $this->Cell(30,8,$this->course_details['venue'],0,0,'L'); 
     $this->SetX(150); 
     $this->Cell(25,8,'City : ',0,0,'L'); 
     $this->Cell(20,8,$this->course_details['city'],0,0,'L'); 
     $this->Ln(); 

     // Fourth Row 
     $this->Cell(35,8,'Other Details : ',0,0,'L'); 
     $this->Cell(150,8,$this->course_details['other_det'],0,0,'L'); 
     $this->Ln(); 


     } 


     function CourseBody() 
     { 

     $this->SetY(80); 

     //$this->WriteHTML($html); 
     $this->Write(10,$this->course_details['desc']); 

     } 

     function PrintChapter() 
     { 
      $this->AddPage(); 
      $this->BodyTop(); 
      $this->CourseBody(); 
     } 
     } 

     $pdf = new PDF(); 

$pdf->setData($course_details); 
     //$pdf->Header(); 

     $pdf->SetAuthor($this->course_details['comp_name']); 
     $pdf->PrintChapter(); 
     $pdf->Output(); 



     ?> 

腳本代碼,我希望......得到一些幫助,這得益於

+2

調用方法並將數據作爲參數傳遞...? – deceze

回答

4

這只是基本的OOP(面向對象編程)真的。

一個變量,您的PDF類添加爲這樣:

public $data; 

添加您的PDF類中的一個函數,它接受一個參數,並使用此功能設置上述變量:

public function setData($input){ 
    $this->data = $input; 
} 

而且那麼您將可以從PDF類中訪問$ this->數據。不要忘記實際調用剛纔定義的函數(就在構造函數之後)。

編輯: 設置數據:

$pdf = new PDF(); 
$pdf->setData($course_details); 

那麼你的PDF類$這個 - 內>數據將是你的陣列。您可能需要執行以下操作,以便了解陣列的格式:

print_r($this->data); 
+0

感謝您的幫助,但仍然收到錯誤消息'無法訪問空屬性'...這涉及到'$ course_details'數據持有數據。只是爲了讓你知道我是一個程序化的PHP人,並開始學習OOP ...我希望能得到更多的幫助...謝謝! – Sms

+1

向我的回答添加了更多的代碼示例。從類外部定義的對象不能從內部訪問。他們在另一個層面上看到(在對象範圍內閱讀)。這就是爲什麼我向您展示如何將該變量傳遞給該類。 $ this-> data然後成爲你的數組。 – Rjs37

+0

我已經嘗試使用$ this-> data ['duration']顯示變量(數組的元素),但不工作...'duration'是數據庫中列的名稱...請告訴我如何你可以在函數內顯示數組中的元素以輸出爲pdf ... 例如: $ this-> Cell(20,8,$ this-> data ['duration']'Day(s) 」,0,0, 'L'); – Sms

相關問題