|
|
|
ใช้ FPDF แล้วพอขึ้นหน้าใหม่หัวตารางไม่มาอ่ะค่ะ คือ ใช้ FPDF เพื่อแสดงข้อมูลจากฐานข้อมูล โดยแสดงเป็นตาราง |
|
|
|
|
|
|
|
คือ ใช้ FPDF เพื่อแสดงข้อมูลจากฐานข้อมูล โดยแสดงเป็นตาราง
แล้วพอขึ้นหน้าใหม่หัวตารางไม่มาอ่ะค่ะ
Code (PHP)
<?php
require("config/connect_db.inc.php");
require('fpdf.php');
//ทำการสืบทอดคลาส FPDF ให้เป็นคลาสใหม่
class PDF extends FPDF
{
//Override คำสั่ง (เมธอด) Header
function Header(){
$this->SetFont('Arial','I',5); //ใช้ตัวอักษร Arial ตัวเอียง ขนาด 5
$this->Text(5,5,'Created by Sakamoto' ); //พิมพ์ตัวหนังสือตัวเอียงๆ ที่ตำแหน่งเยื้องขอบกระดาษซ้าย 5หน่วย ขอบกระดาษบน 5หน่วย
$this->Ln(20); //ปัดบรรทัด กำหนดความกว้างของบรรทัด 20หน่วย
}
//Override คำสั่ง (เมธอด) Footer
function Footer() {
//นับจากขอบกระดาษด้านล่างขึ้นมา 10 มม.
$this->SetY( -10 );
//กำหนดใช้ตัวอักษร Arial ตัวเอียง ขนาด 5
$this->SetFont('Arial','I',5);
//พิมพ์วัน-เวลา ตรงมุมขวาล่าง
$this->Cell(0,10,'Time '. date('d').'/'. date('m').'/'.( date('Y')+543 ).' '. date('H:i:s') ,0,0,'L');
$this->Cell(0,10, 'page '.$this->PageNo().' of tp' ,0,0,'R');
}
//Load data
function LoadData($file)
{
//Read file lines
$lines=file($file);
$data=array();
foreach($lines as $line)
$data[]=explode(';',chop($line));
return $data;
}
//Simple table
function BasicTable($header,$data)
{
//Header
$w=array(10,30,25,20,30,30);
//Header
for($i=0;$i<count($header);$i++)
$this->Cell($w[$i],7,$header[$i],1,0,'C');
$this->Ln();
//Data
$num=1; //ลำดับที่ 123
foreach ($data as $eachResult)
{
//$this->Cell(20,6,$eachResult["id_std"],1);/*ดึงมาจากดาต้าเบส*/
$this->Cell(10,6,$eachResult["id_std"],1,0,'C');
$this->Cell(30,6,$eachResult["name_std"],1,0,'L');
$this->Cell(25,6,$eachResult["lastname_std"],1,0,'C');
$this->Cell(20,6,$eachResult["nickname_std"],1,0,'C');
$this->Cell(30,6,$eachResult["school_std"],1,0,'C');
$this->Cell(30,6,$eachResult["degree_std"]*5,1,0,'C');
//$this->Cell(20,6,$eachResult["Budget"],1);
$this->Ln();
$num++;
}
}
}
$pdf=new PDF();//เรียกใช้งาน เราจะเรียกใช้คลาสใหม่ของเราแทน
//Column titles
$header=array('ลำดับที่','ชื่อ','สกุล','ชื่อเล่น','โรงเรียน','ชั้น');
$strSQL = "SELECT * FROM tb_student";
$objQuery = mysql_query($strSQL);
$resultData = array();
for ($i=0;$i<mysql_num_rows($objQuery);$i++) {
$result = mysql_fetch_array($objQuery);
array_push($resultData,$result);
}
//*** Table 1 ***//
$pdf->SetMargins(10,2,10);//กำหนด Margin
$pdf->AddPage();//เพิ่มหน้า
$pdf->AliasNbPages( 'tp' );//แสดงเลขหน้า
//เพิ่ม font เข้ามาในเอกสาร
$pdf->AddFont('angsana','','angsa.php');
$pdf->AddFont('angsana','B','angsab.php');
//กำหนดแบบอักษรรายการ
$pdf->SetFont('angsana','',14);
$pdf->Cell(0,6,'ตารางรายชื่อนักเรียน',0,1,'C');
$pdf->Ln(5);//ระหว่างบรรทัด
$pdf->BasicTable($header,$resultData);
$pdf->Output();
?>
Tag : - - - -
|
|
|
|
|
|
Date :
2010-07-13 13:19:11 |
By :
fon |
View :
9397 |
Reply :
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ส่งเป็นแนวคิดให้นะค่ะ
1. ต้องดูก่อนว่าข้อมูลที่เป็นตารางของเรานั้น มีกี่แถว
2. ต้องดูว่า 1 หน้ารับข้อมูลได้กี่แถว
3. หน้าที่ 1 กับหน้าสุดท้ายแสดงข้อมูลเป็นจำนวนแถวได้เท่ากันมั้ย
ตัวอย่าง 1 เช่น มีข้อมูล 50 rows 1 หน้ารับข้อมูลได้ไม่เกิน 25 rows ฉะนั้นเราจึงแบ่งเป็น 2 หน้า
Code (PHP)
require formatPage.php; //include functionเข้ามา ซึ่งก็คือพวกที่คุณประกาศค่า function ต่าง ๆ ของหน้านี้นั่นแหละ
$strSQL = "SELECT * FROM tb_student";
$objQuery = mysql_query($strSQL);
$rows = mysql_num_rows($objQuery); // หาจำนวนแถวก่อน
if(rows>25){ // ถ้าแถวมากกว่า 25 แถวให้ทำการตัดข้อมูลของหน้าที่ 1 ก่อน
$pdf=new PDF();//สร้าง PDF หน้าแรก
//Column titles ใส่หัวตาราง
$header=array('ลำดับที่','ชื่อ','สกุล','ชื่อเล่น','โรงเรียน','ชั้น');
$pdf->SetMargins(10,2,10);//กำหนด Margin
$strSQL = "SELECT * FROM tb_student Limit 0,25";
$objQuery = mysql_query($strSQL);
$pdf->AddPage();//เพิ่มหน้า
$resultData = array();
for ($i=0;$i<mysql_num_rows($objQuery);$i++) {
$result = mysql_fetch_array($objQuery);
array_push($resultData,$result);
}
//*** Table 1 ***//
$pdf->AliasNbPages( 'tp' );//แสดงเลขหน้า
//เพิ่ม font เข้ามาในเอกสาร
$pdf->AddFont('angsana','','angsa.php');
$pdf->AddFont('angsana','B','angsab.php');
//กำหนดแบบอักษรรายการ
$pdf->SetFont('angsana','',14);
$pdf->Cell(0,6,'ตารางรายชื่อนักเรียน',0,1,'C');
$pdf->Ln(5);//ระหว่างบรรทัด
$pdf->BasicTable($header,$resultData);
}else if(rows>25 && rows<=50){
$strSQL1 = "SELECT * FROM tb_student Limit 25,50";
$objQuery1 = mysql_query($strSQL1);
$pdf->AddPage();//เพิ่มหน้า
$resultData1 = array();
for ($j=0;$i<mysql_num_rows($objQuery1);$i++) {
$result = mysql_fetch_array($objQuery1);
array_push($resultData1,$result1);
}
//*** Table 2 ***//
$pdf->AliasNbPages( 'tp' );//แสดงเลขหน้า
//เพิ่ม font เข้ามาในเอกสาร
$pdf->AddFont('angsana','','angsa.php');
$pdf->AddFont('angsana','B','angsab.php');
//กำหนดแบบอักษรรายการ
$pdf->SetFont('angsana','',14);
$pdf->Cell(0,6,'ตารางรายชื่อนักเรียน',0,1,'C');
$pdf->Ln(5);//ระหว่างบรรทัด
$pdf->BasicTable($header,$resultData1);
}else if(rows>50 && rows<=75){
... ทำตาม Table2 จนจบข้อมูล
}
// แสดง output เมื่อลูปข้อมูลจบแล้ว
$pdf->Output();
?>
อันนี้ก็เป็นกรณีที่มีการแสดงแถวเท่ากันทุกหน้านะค่ะ ส่วนถ้าหน้าแรกกะหน้าสุดท้ายไม่เท่ากัน ก็ลองปรับ ๆ ดูแล้วกันค่ะ
โค้ดทั้งหมดยังไม่ได้ทำการรัน ฉะนั้น อาจจะผิดพลาดไปบ้าง รบกวนตรวจดูความถูกต้องอีกครั้งนะค่ะ
|
|
|
|
|
Date :
2010-07-15 11:31:28 |
By :
s_ting |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากค่ะ
|
|
|
|
|
Date :
2010-07-15 17:19:26 |
By :
fon |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมอยากได้แสดงแค่ 10 แถวครับ ถ้าเกิน 10 ก็ให้ขึ้นหน้าต่อไปครับทำงัยดี
Code (PHP)
<?
//กำหนด Header ส่วนที่เกี่ยวข้อง
include ('adodb/adodb.inc.php');
define('FPDF_FONTPATH','fpdf/font/');
require ('fpdf/jpdf.inc.php');
class PDF extends FPDF
{
function Header()
{
//Logo
//Arial bold 15
$this->SetFont('angsana','B',15);
//Move to the right
$this->Ln(10);
$this->Cell(80);
//Title
$this->Cell(30,10,'SERVICE ACKNOWLEDGEMENT REPORT (SAR)',0,0,'C');
$this->Ln(15);
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$objDB = mysql_select_db("sarnewtest");
mysql_query("SET NAMES 'tis620' ");
$test=$_POST["MONTH"];
$test2=$_POST["YEAR"];
$strSQL = "select * from sar where MONTH='$test' AND YEAR='$test2'";
$objQuery = mysql_query($strSQL);
$resultData = array();
for ($i=0;$i<mysql_num_rows($objQuery);$i++) {
$result = mysql_fetch_array($objQuery);
array_push($resultData,$result);
}
$this->SetFont('angsana','',16);
$this->cell(0,7,'NAME: '.$result["NAME"].' Signature : . . . . . . . . . . . . . . . . . . . . . .'.' MONTH: '.$result["MONTH"].' '.$result["YEAR"],1,0,'L');
$this->SetFont('angsana','',10);
$this->Ln(10);
$this->cell(15,7,'Date',1,0,'L');
$this->cell(15,7,'Time in',1,0,'L');
$this->cell(15,7,'Time out',1,0,'L');
$this->cell(15,7,'Equivalent',1,0,'L');
$this->cell(25,7,'Site-name Project',1,0,'L');
$this->cell(70,7,'TASK',1,0,'C');
$this->cell(0,7,'REMARKS',1,0,'L');
//Line break
$this->Ln();
}
function Footer()
{
$this->SetY(-90);
$this->Ln(15);
$this->SetFont('angsana','',16);
$this->cell(0,7,'______________________',0,0,'R');
$this->Ln(7);
$this->cell(0,7,'Initail by ',0,0,'R');
$this->Ln(10);
$this->cell(0,7,'______________________',0,0,'R');
$this->Ln(7);
$this->cell(0,7,'Approved by ',0,0,'R');
//Position at 1.5 cm from bottom
$this->SetY(-15);
//Arial italic 8
$this->SetFont('Arial','I',8);
//Page number
$this->Cell(0,10,'Page '.$this->PageNo().'',0,0,'C');
}
function conv($string) {
return iconv('UTF-8', 'TIS-620', $string);
}
//Load data
function LoadData($file)
{
//Read file lines
$lines=file($file);
$data=array();
foreach($lines as $line)
$data[]=explode(';',chop($line));
return $data;
}
//Simple table
function BasicTable($header,$data)
{
//Header
$w=array(15,15,15,15,25,70,35);
//Header
for($i=0;$i<count($header);$i++)
$this->Cell($w[$i],7,$header[$i],1,0,'C');
//Data
foreach ($data as $eachResult)
{
$this->Cell(15,6,$eachResult["DATE"],1,0,'C');
$this->Cell(15,6,$eachResult["TIMEIN"],1,0,'C');
$this->Cell(15,6,$eachResult["TIMEOUT"],1,0,'C');
$this->Cell(15,6,$eachResult["Equivalent"],1,0,'C');
$this->Cell(25,6,$eachResult["Project"],1);
$this->Cell(70,6,$eachResult["TASK"],1);
$this->Cell(35,6,$eachResult["REMARKS"],1);
$this->Ln();
}
}
//Better table
function ImprovedTable($header,$data)
{
//Column widths
$w=array(10,20,20,30,70,20);
//Header
for($i=0;$i<count($header);$i++)
$this->Cell($w[$i],7,$header[$i],1,0,'C');
$this->Ln();
//Data
foreach ($data as $eachResult)
{
$this->Cell(10,6,$eachResult["id"],1);
$this->Cell(20,6,$eachResult["TIMEIN"],1);
$this->Cell(20,6,$eachResult["TIMEOUT"],1);
$this->Cell(30,6,$eachResult["CUSTOMERS"],1);
$this->Cell(70,6,$eachResult["TASK"],1);
$this->Cell(20,6,$eachResult["REMARKS"],1);
$this->Ln();
}
//Closure line
$this->Cell(array_sum($w),0,'','T');
}
//Colored table
function FancyTable($header,$data)
{
//Colors, line width and bold font
$this->SetFillColor(255,0,0);
$this->SetTextColor(255);
$this->SetDrawColor(128,0,0);
$this->SetLineWidth(.3);
$this->SetFont('','B');
//Header
$w=array(10,20,20,30,70,20);
for($i=0;$i<count($header);$i++)
$this->Cell($w[$i],7,$header[$i],1,0,'C',true);
$this->Ln();
//Color and font restoration
$this->SetFillColor(224,235,255);
$this->SetTextColor(0);
$this->SetFont('');
//Data
$fill=false;
foreach($data as $row)
{
$this->Cell($w[0],6,$row[0],'LR',0,'L',$fill);
$this->Cell($w[1],6,$row[1],'LR',0,'L',$fill);
$this->Cell($w[2],6,$row[2],'LR',0,'L',$fill);
$this->Cell($w[3],6,$row[3],'LR',0,'C',$fill);
$this->Cell($w[4],6,number_format($row[4]),'LR',0,'R',$fill);
$this->Cell($w[5],6,number_format($row[5]),'LR',0,'R',$fill);
$this->Cell($w[5],6,number_format($row[5]),'LR',0,'R',$fill);
$this->Ln();
$fill=!$fill;
}
$this->Cell(array_sum($w),0,'','T');
}
}
$pdf=new PDF();
//Column titles
//Data loading
//*** Load MySQL Data ***//
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$objDB = mysql_select_db("sarnewtest");
mysql_query("SET NAMES 'tis620' ");
$test=$_POST["MONTH"];
$test2=$_POST["YEAR"];
$strSQL = "select * from sar where MONTH='$test' AND YEAR='$test2'";
$objQuery = mysql_query($strSQL);
$resultData = array();
for ($i=0;$i<mysql_num_rows($objQuery);$i++) {
$result = mysql_fetch_array($objQuery);
array_push($resultData,$result);
}
//************************//
$pdf->AddFont('angsana','B','angsanab.php');
$pdf->AddFont('angsana','','angsana.php');
//*** Table 1 ***//
$pdf->AddPage();
$pdf->SetFont('angsana','',10);
$pdf->BasicTable($header,$resultData);
//สิ้นสุดการประมวลผลและส่งออกไฟล์เป็น PDF ไฟล์
$pdf->Output();
?>
|
|
|
|
|
Date :
2011-02-23 15:16:18 |
By :
toon |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมอยากแสดงเป็นรูปภาพที่ใช้คำสั่ง Image นะครับแต่ว่ามันทำไม่ได้ไม่ทราบมีวิธีบ้างไหมครับ อีกอย่างรูปภาพที่แสดงแต่ละรูปขนาดจะไม่เท่ากัน ใครทราบช่วยแนะนำหน่อยนะครับ
|
|
|
|
|
Date :
2011-03-02 08:34:39 |
By :
payak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|