ข้ามไปที่เนื้อหาหลัก

PHP PDF ตอนที่ 2 : เริ่มต้นทดสอบกรอกข้อมูลลงในแบบฟอร์มที่กำหนด

      จากความเดิมตอนที่แล้ว "PHP PDF ตอนที่ 1 : ออกรายงานเอกสาร PDF ด้วย PHP CodeIgniter โดยใช้ไลบรารี่ TCPDF และ FPD" ในตอนนี้เรามาลองสร้างข้อมูลทดสอบกันสักหน้าละกันนะครับ ก่อนที่จะนำเข้าสู่การสร้างฐานข้อมูลเพื่อใช้กับข้อมูลทะเบียนนักเรียนของเรา และจะต่อยอดไปถึงระบบบันทึกข้อมูลผลการประเมินแบบออนไลน์กันเลยทีเดียว ^^


1. เริ่มต้นจากการเตรียมไลบราลี่ PDF ที่ต้องใช้ทั้งหมด 2 ตัวด้วยกัน
    1) TCPDF
    2) FPDI
    (จะนำไปไว้ในไดเรกทอรี่ application/third_party ของ codeigniter)

2. จากนั้นก็เตรียมโปรเจ็กต์ด้วย CodeIgniter ด้วยโปรแกรมที่ใช้เขียนโค๊ด (IDE) ที่ชื่อว่า eclipse ซึ่งในส่วนนี้ใครถนัดโปรแกรมไหน จะใช้อะไรเขียนโค๊ดก็ตามสะดวกเลยครับ




3. สร้างไฟล์ Pdf.php ในไดเรกทอรี่ libralies เพื่อเรียกใช้ไลบราลี่ TCPDF และ FPDI



   libraries/Pfd.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

require_once APPPATH.'third_party/tcpdf/tcpdf.php';
require_once APPPATH.'third_party/fpdi/fpdi.php';

class Pdf extends FPDI
{
    function __construct()
    {
        parent::__construct();
    }
}

/* End of file Pdf.php */
/* Location: ./application/libraries/Pdf.php */

    สำหรับลิงค์แนะนำการใช้งานมีดังนี้
    https://github.com/bcit-ci/CodeIgniter/wiki/TCPDF-Integration
    http://stackoverflow.com/questions/21016626/codeigniter-third-party-class-not-loading






4.  สร้างไฟล์ Estimation.php ไว้ในไดเรกทอรี่ controllers เพื่อเรียกใช้งาน
     controllers/Estimation.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Estimation extends CI_Controller {

    /**
     * Index Page for this controller.
     */
    public function index()
    {
       
        $this->load->view('estimation/estimation_pdf');

    }
}


5. สร้างไดเรกทอรี่ชื่อ estimation เพื่อใช้เก็บไฟล์ view ทั้งหมดของคอนโทรลเลอร์  controllers/Estimation.php โดยจะเก็บไฟล์  estimation_pdf.php ไว้ใน view ที่สร้างมานี้



    สำหรับโค๊ดที่เรียกใช้ FPDI ดูตัวอย่างได้จากเว็บ http://www.setasign.com/products/fpdi/demos/tcpdf-demo/

    views/estimation_pdf.php

<?php
    $this->load->library('Pdf');
   
    class MyPDF extends Pdf
    {
        /**
         * "Remembers" the template id of the imported page
         */
        var $_tplIdx;
   
        /**
         * Draw an imported PDF logo on every page
         */
        function Header()
        {           
            $file = dirname(__FILE__)."/PdfDocument.pdf";
            if (is_null($this->_tplIdx)) {
                $this->setSourceFile($file);
                $this->_tplIdx = $this->importPage(1);
            }
            $specs = $this->getTemplateSize($this->_tplIdx);
            $size = $this->useTemplate($this->_tplIdx, 10);
        }
   
        function Footer()
        {
            // emtpy method body
        }
    }
   
    // initiate PDF
    $pdf = new MyPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
    $pdf->SetMargins(PDF_MARGIN_LEFT, 40, PDF_MARGIN_RIGHT);
    $pdf->SetAutoPageBreak(true, 20);
    $pdf->setFontSubsetting(false);
   
    // add a page
    $pdf->AddPage();
   
    $pdf->SetFont('freeserif', '', 12);
   
    $data = array();
    $data[0] = array('name'=>'ด.ช.ใจดี มีสุข', 'score1' => 1, 'score2' => 1, 'score3' => 1);
    $data[1] = array('name'=>'ด.ญ.อารียา พาใจ', 'score1' => 0, 'score2' => 1, 'score3' => 3);
    $data[2] = array('name'=>'ด.ญ.มานี มีนา', 'score1' => 3, 'score2' => 1, 'score3' => 2);
    $data[3] = array('name'=>'ด.ช.มานพ พบพาน', 'score1' => 1, 'score2' => 0, 'score3' => 3);
    $data[4] = array('name'=>'ด.ช.หาญกล้า ชาญสมร', 'score1' => 2, 'score2' => 3, 'score3' => 1);
    $data[5] = array('name'=>'ด.ช.ใจดี มีสุข', 'score1' => 1, 'score2' => 1, 'score3' => 1);
    $data[6] = array('name'=>'ด.ญ.อารียา พาใจ', 'score1' => 2, 'score2' => 1, 'score3' => 3);
    $data[7] = array('name'=>'ด.ญ.มานี มีนา', 'score1' => 0, 'score2' => 1, 'score3' => 2);
    $data[8] = array('name'=>'ด.ช.มานพ พบพาน', 'score1' => 1, 'score2' => 0, 'score3' => 3);
   
    $i=0;
    $x=35;
    $y=80;
    $pdf->setCellPaddings(0, 2, 0, 0);
    $pdf->setCellMargins(0, 0, 0, 0);
    foreach ($data as $row){
        $i++;
       
        if($row['score1'] > 0 && $row['score2'] > 0 && $row['score3'] > 0){
            $ok = '/';
            $fail = '';
        }else{
            $ok = '';
            $fail = '/';
        }
        $pdf->SetXY($x,$y);
       
        $pdf->MultiCell(20, 9, $i, 0, 'C', 0, 0);
        $pdf->MultiCell(55, 9, $row['name'], 0, 'L', 0, 0);
        $pdf->MultiCell(10, 9, $row['score1'], 0,  'C', 0, 0);
        $pdf->MultiCell(10, 9, $row['score2'], 0,  'C', 0, 0);
        $pdf->MultiCell(10, 9, $row['score3'], 0,  'C', 0, 0);
        $pdf->MultiCell(20, 9, $row['score1']+$row['score2']+$row['score3'], 0, 'C', 0, 0);
        $pdf->MultiCell(15, 9, $ok, 0, 'C', 0, 0);
        $pdf->MultiCell(15, 9, $fail, 0, 'C', 0, 0);
       
        $y += 8.7;
    }
   
    //foot data
    $pdf->setXY(98, 251);
    $pdf->Cell(56, 8, 'อ.อารีย์   ใจดี', 0, 0, 'C');
   
    $pdf->setXY(109, 259);
    $date = date('d') . '            '. date('m') . '           ' . (date('Y')+543);
    $pdf->Cell(56, 8, $date, 0, 0, 'L');
   
    $pdf->Output();
?>


6. เตรียมไฟล์แบบฟอร์ม PDF ที่มีการเรียกใช้ไว้ใน view/estimation ซึ่งเป็นโฟลเดอร์เดียวกันกับไฟล์ view เรียกใช้ ซึ่งในตัวอย่างคือ view/estimation/PdfDocument.pdf
(ดาวน์โหลดได้ที่ : เว็บไซต์ครูเชียงราย : แบบสังเกตพฤติกรรมการเรียน)





7. ลองเข้าหน้าเว็บเพจโดยผ่านคอนโทรลเลอร์ที่สร้างไว้ ในที่นี้คือ http://localhost/example/sunzan-design.com/index.php/estimation ซึ่งคอนโทรลเลอร์ในข้อที่ 3 ก็จะโหลด view ที่ใช้สร้าง PDF ออกมาผลลัพธ์ดังรูปด้านล่างนี้



สรุปการทำงานของโค๊ดนี้ก็คือ

1. โหลดหน้าแบบฟอร์ม PDF เปล่าๆ เข้ามารอไว้ด้วย FPDI


2. เขียนข้อมูลต่างๆ ลงไปยังตำแหน่งต่างๆ บนหน้ากระดาษ



3. เมื่อสั่ง $pdf->Output() ก็จะได้หน้า PDF ที่มีข้อมูลทั้งสองส่วนนี้มารวมกัน




จบแล้วครับ พบกันใหม่ในบทความต่อไป ^_____^


"PHP ไม่ได้สร้างสุดยอดโปรแกรม แต่ PHP ช่วยให้งานคุณง่ายขึ้นต่างหาก"

PHP CI MANIA PHP Code Generator 
โปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม

สนใจสั่งซื้อเพียง 3,990 บาท


PHP CI MANIA PHP Code Generator 

โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม"
ราคาสุดคุ้มเพียง 3,990 บาท 
http://www.phpcodemania.com

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

แจกฟรี!! ระบบต่างๆที่พัฒนาด้วย PHP สำหรับนำไปใช้ในงานต่างๆ

       สำหรับหลายท่านที่ขอโค้ดเข้ามาทาง Inbox ของเฟซบุ๊กแฟนเพจ หรือถามถึงระบบต่างๆหลังไมค์มานั้น ส่วนใหญ่ก็มีแจกอยู่แล้วในเว็บบอร์ด ThaiCreate.Com นะครับ และด้านล่างนี้ก็เป็นระบบต่างๆที่แจกให้นำไปลองใช้ลองศึกษากันครับ

สร้างแบบฟอร์มล็อกอิน HTML + PHP

       ผมจะสร้างระบบตัวอย่างเพื่อแสดงให้เห็นการทำงานของสคริปต์ PHP ที่ใช้ในการล็อกอินอย่างง่ายๆ นะครับ โดยที่ผมจะสร้างโฟลเดอร์ใหม่ขึ้นในไดร์ฟที่เราได้กำหนดให้เป็น Directory Root สำหรับรันสคริปต์ PHP ซึ่งผมกำหนดเอาไว้ที่ D:\www ดังนั้นผมจะสร้างโฟลเดอร์ teacher_assistant ขึ้นมาใหม่จะได้พาธเป็น D:\www\teacher_assistant สำหรับการเข้าถึง จะใช้ URL ดังนี้ http://localhost/teacher_assistant หลังจากสร้างโฟลเดอร์เสร็จเรียบร้อยก็จะเริ่มกระบวนการเตรียมโครงสร้างโปรเจ็กต์ด้วยเครื่องมือช่วยเขียนโปรแกรมชื่อว่า eclipse ซึ่งดูวิธีการสร้างโปรเจ็กต์ได้จากบทความ เริ่มต้นสร้างโปรเจ็กต์ ด้วยโปรแกรม eclipse เครื่องมือเขียนโปรแกรม php ในบทความเป็นการสร้างโปรเจ็กต์ที่มีพาธเป็นโฟลเดอร์ login แต่ในที่นี้ต้องเป็นพาธให้ตรงกับโฟลเดอร์ใหม่ที่เราได้สร้างขึ้นด้วยนะครับ

PHP กับการคิดส่วนลดเป็นเปอร์เซ็น 5%, 10%, 20% ตามช่วงราคาที่กำหนด

<?php     $total_price = 1000;     $discount = 0;         if($total_price >= 500 && $total_price < 1001){         $discount = 5;     }elseif($total_price >= 1001 && $total_price <= 5000){         $discount = 10;     }elseif($total_price >= 5001){         $discount = 20;     }         $discount_bath = ($total_price*$discount)/100; ?> <pre> ซื้อสินค้าครบ 0 ถึง 499 บาท ไม่ได้ส่วนลด ซื้อสินค้าครบ 500 ถึง 1000 บาท ได้ส่วนลด 5% ซื้อสินค้าครบ 1001 ถึง 5000บาท ได้ส่วนลด 10% ซื้อสินค้าครบ 5001 บาทขึ้นไป ได้ส่วนลด 20% </pre> <h3>รวมราคาสินค้า = <?php echo number_format($total_price,2);?></h3> <h5>ส่วนลด = <?php echo $discount;?>%  (<?php echo $discount_bath;?> บาท)</h5> <h2>ราคาหลังส่วนลด = <?php echo number_format($total_price - $discount_bath,2);?>บาท</h2> "PHP ไม่ได้สร้างสุดยอดโปรแกรม แต่ PHP ช่วยให้งานคุณง่ายขึ้นต