|
|
|
จากโค๊ดจากบทความ ออกรายงาน PDF ท่าจะให้เราเป็นผู้เลือกวันที่ ที่ต้องการออกรายงานควรทำอย่างไรครับ! |
|
|
|
|
|
|
|
Code (PHP)
<html>
<head>
<title>ThaiCreate.Com PHP PDF</title>
</head>
<body>
<?php
require('fpdf.php');
class PDF extends FPDF
{
//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(30,30,55,25,20,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(30,6,$eachResult["CustomerID"],1);
$this->Cell(30,6,$eachResult["Name"],1);
$this->Cell(55,6,$eachResult["Email"],1);
$this->Cell(25,6,$eachResult["CountryCode"],1,0,'C');
$this->Cell(20,6,$eachResult["Budget"],1);
$this->Cell(20,6,$eachResult["Budget"],1);
$this->Ln();
}
}
//Better table
function ImprovedTable($header,$data)
{
//Column widths
$w=array(20,30,55,25,25,25);
//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(20,6,$eachResult["CustomerID"],1);
$this->Cell(30,6,$eachResult["Name"],1);
$this->Cell(55,6,$eachResult["Email"],1);
$this->Cell(25,6,$eachResult["CountryCode"],1,0,'C');
$this->Cell(25,6,number_format($eachResult["Budget"],2),1,0,'R');
$this->Cell(25,6,number_format($eachResult["Budget"],2),1,0,'R');
$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(20,30,55,25,25,25);
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->Ln();
$fill=!$fill;
}
$this->Cell(array_sum($w),0,'','T');
}
}
$pdf=new PDF();
//Column titles
$header=array('CustomerID','Name','Email','Country Code','Budget','Used');
//Data loading
//*** Load MySQL Data ***//
$objConnect = mysql_connect("localhost","root","1234") or die("Error Connect to Database");
$objDB = mysql_select_db("ex_pdf");
$strSQL = "SELECT * FROM customer";
$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->SetFont('Arial','',10);
//*** Table 1 ***//
$pdf->AddPage();
$pdf->Image('logo.png',80,8,33);
$pdf->Ln(35);
$pdf->BasicTable($header,$resultData);
//*** Table 2 ***//
$pdf->AddPage();
$pdf->Image('logo.png',80,8,33);
$pdf->Ln(35);
$pdf->ImprovedTable($header,$resultData);
//*** Table 3 ***//
$pdf->AddPage();
$pdf->Image('logo.png',80,8,33);
$pdf->Ln(35);
$pdf->FancyTable($header,$resultData);
$pdf->Output("MyPDF/MyPDF.pdf","F");
?>
PDF Created Click <a href="MyPDF/MyPDF.pdf">here</a> to Download
</body>
</html>
Tag : PHP, MySQL
|
|
|
|
|
|
Date :
2013-02-12 02:40:35 |
By :
biggest59 |
View :
3611 |
Reply :
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
$strSQL = "SELECT * FROM customer WHERE CreateDate BETWEEN 'StartDate' AND 'EndDate' ";
|
|
|
|
|
Date :
2013-02-12 07:10:38 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าคุณ biggest59 ส่งค่า ตัวแปรเข้าไปใน Class fpdf.php ได้ ผมตอบได้เลยว่าทำได้ตามที่ต้องการ.....แต่ผมลองส่งค่า $id ที่อ้างในในการปริ้นท์ เข้าไปมั่ว ๆ ดู แต่ยังผมทำไม่ได้ ....
|
|
|
|
|
Date :
2013-02-12 16:07:57 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ต้องลอง หรือ รอต่อไป.....เพราะตอนทำที่แรกชื่อไฟล์ผมก็ MyPDF.pdf แต่ก็เปลี่ยนได้แค่ชื่อที่เจาะจง อาจจะมีใครแนะนำการส่งค่าตัวแปร เข้า class
|
|
|
|
|
Date :
2013-02-12 16:28:30 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมลองทำดูมันก็ออกปกติน่ะครับ
ลองเอาไปดูหล่ะกัน
** เรียกใช้รูปแบบ Table อันเดียวก็พอ เช่น Basictable, Improvetable, Fancytable เอาซักตัวครับ ตัวเดียวน่ะ
Example Code(PHP)
<html>
<head>
<title>ThaiCreate.Com PHP PDF</title>
</head>
<body>
<?php
require('fpdf/fpdf.php');
class PDF extends FPDF
{
//Load data
function LoadData($file)
{
//Read file lines
$lines=file($file);
$data=array();
foreach($lines as $line)
$data[]=explode(';',chop($line));
return $data;
}
//Better table
function ImprovedTable($header,$data,$width)
{
//Header
for($i=0;$i<count($header);$i++){
$this->Cell($width[$i],7,$header[$i],1,0,'C');
}
$this->Ln();
//Data
foreach ($data as $datas)
{
$w=0;
foreach($datas as $fill){
$this->Cell($width[$w],6,$fill,1);
$w++;
}
$this->Ln();
}
//Closure line
$this->Cell(array_sum($width),0,'','T');
}
}
$pdf=new PDF();
//Column titles
$header=array('ID','DATE','METER');
//Data loading
//*** Load MySQL Data ***//
$objConnect = mysql_connect("localhost","root","rootpass") or die("Error Connect to Database");
$objDB = mysql_select_db("graph");
$strSQL = "SELECT * FROM tb_tcooling";
$objQuery = mysql_query($strSQL);
$resultData = array();
while($data=mysql_fetch_array($objQuery)){
$resultData[]=array($data['id'],$data['date'],$data['meter']);
}
//print_r($resultData);die;
$myHeader = array('ID','DATE','METER'); // Header
$myWidthFixed = array(20,25,25); // กำหนดความกว้างให้แต่ละคอลัมภ์
$pdfname = 'HelloPDF.pdf'; // ชื่อไฟล์ที่ต้องการ
$pdf->SetFont('Arial','',10);
//*** Table 2 ***//
$pdf->AddPage();
$pdf->Image('logo.gif',80,8,33);
$pdf->Ln(35);
$pdf->ImprovedTable($myHeader,$resultData,$myWidthFixed); // ส่ง header + data + width ไปให้ ImproveTable
$pdf->Output($pdfname,"F"); // ใส่ชื่อใหม่ตามใจชอบผ่านตัวแปร $pdfname จากด้านบน
?>
PDF Created Click <a href="<?php echo $pdfname;?>">here</a> to Download
</body>
</html>
ตัวอย่างผลลัพธ์ผมน่ะ
|
ประวัติการแก้ไข 2013-02-12 18:43:14 2013-02-12 18:45:32
|
|
|
|
Date :
2013-02-12 18:42:28 |
By :
mangkunzo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จาก
$pdfname = 'HelloPDF.pdf'; // ชื่อไฟล์ที่ต้องการ (แบบนี้ทำได้)
ถ้าเราทำเป็น
$x = $_GET['id']; //สมมุติเป็นการรับค่า id มาแล้วกัน สมมุติ id = 333
$pdfname = '$x.pdf'; //ผมยังไม่ได้ลองวาง ตัวแปร x หลาย ๆ แนว ....
แล้วให้ผลออกมาเป็นชื่อไฟล์ 333.pdf แบบนี้...
เคยทำแบบนี้หรือเปล่าครับ (ต้องลอง)
|
ประวัติการแก้ไข 2013-02-12 21:11:39
|
|
|
|
Date :
2013-02-12 21:11:01 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ก็รับค่าปกติครับ
$pdfname = $_POST['textboxname'].".pdf";
|
ประวัติการแก้ไข 2013-02-12 22:03:56
|
|
|
|
Date :
2013-02-12 22:03:29 |
By :
mangkunzo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 11 เขียนโดย : mangkunzo เมื่อวันที่ 2013-02-12 22:03:29
รายละเอียดของการตอบ ::
ที่ผมทำรับค่าจาก หน้า index มานะ
นี้โคีดนะครับ Code (PHP)
$pdf=new PDF();
//Column titles
$header=array('CustomerID','Name','Email','Country Code','Budget','Used');
//Data loading
//*** Load MySQL Data ***//
$txtname = $_POST["txtname"].".pdf";
$objConnect = mysql_connect("localhost","root","1234") or die("Error Connect to Database");
$objDB = mysql_select_db("ex_pdf");
$strSQL = "SELECT * FROM customer";
$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->SetFont('Arial','',10);
//*** Table 3 ***//
$pdf->AddPage();
$pdf->Image('logo.png',80,8,33);
$pdf->Ln(35);
$pdf->FancyTable($header,$resultData);
$pdf->Output("MyPDF/$txtname","F");
?>
PDF Created Click <a href="<?php echo MyPDF/$txtname;?>">here</a> to Download
|
|
|
|
|
Date :
2013-02-12 22:37:03 |
By :
biggest59 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อะไรไม่โชว์ครับ
|
ประวัติการแก้ไข 2013-02-12 22:42:49
|
|
|
|
Date :
2013-02-12 22:42:14 |
By :
mangkunzo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|