|
|
|
โปรแกรมเมอร์ ช่วย โปรแกรมมั่ว ด้วยกับ พอ เขียนเว็ปได้ บริษัทให้ export ข้อมูล ออกเป็น pdf |
|
|
|
|
|
|
|
Code
<?php
require_once('fpdf.php');
require_once('fpdi.php');
$pdf = new FPDI('L','mm',array(216,356));
//$pdf=new PDF_MC_Table();
$pdf->AddFont('angsana','','angsa.php');
// เพิ่มฟอนต์ภาษาไทยเข้ามา ตัวหนา กำหนด ชื่อ เป็น angsana
$pdf->AddFont('angsana','B','angsab.php');
$pdf->AddFont('CordiaNew','','cordia.php');
// เพิ่มฟอนต์ภาษาไทยเข้ามา ตัวหนา กำหนด ชื่อ เป็น angsana
$pdf->AddFont('angsana','I','angsai.php');
// เพิ่มฟอนต์ภาษาไทยเข้ามา ตัวหนา กำหนด ชื่อ เป็น angsana
$pdf->AddFont('angsana','BI','angsaz.php');
$pdf->setSourceFile('Legal.pdf');
$tplidx = $pdf->importPage(1);
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$objDB = mysql_select_db("mydatabase");
$strSQL = "SELECT * FROM customer";
$objQuery = mysql_query($strSQL);
$pdf->addPage();
$pdf->SetDisplayMode('real');
$pdf->SetFont('angsana','',14);
$pdf->useTemplate($tplidx);
$h=6;
$nb=56;
$i=0;
while($rs=mysql_fetch_object($objQuery)){
$i++;
$pdf->SetXY(33, $nb);
$pdf->Cell(47,$h,iconv('','cp874',$rs->Name),1,2,"L");
$pdf->SetXY(21, $nb);
$pdf->Cell(12,$h,iconv('','cp874',$rs->CustomerID),1,0,"C");
$pdf->SetXY(12, $nb);
$pdf->Cell(7,$h,$i,1,0,"C");
$nb=$nb+6;
$pdf->Ln(1);
}
$pdf->Output();
$pdf->closeParsers();
?>
ใช้ add Template ไฟล์ เข้ามาดังรูป ต้องการ จะ วนลูป ข้อมูล หน้า ที่ 2 ต่อ เป็น 16 17 ไปเรื่อย ๆหน้า ที่ 3 ก้อ เป็น 31.... จะเขียนโค๊ตยังไง คับ เขียนเป็น class ก้อ ไม่เป็นด้วย แล้วจะทำยังไงให้ ตารางมันตรงกับ Template ไฟล์คับ
Tag : PHP, MySQL, Ms SQL Server 2008, Reporting Service
|
|
|
|
|
|
Date :
2012-11-03 15:34:16 |
By :
ico_2u |
View :
1236 |
Reply :
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เอามาแชร์ค่ะ ของเราเป็นรายงานแบบดึงตารางอย่างเดียว ไม่ได้เป็น template ที่มีให้เซนต์ชื่อท้ายแผ่นแบบคุณ kim แต่ต้องการให้แสดงหัวตารางในหน้าถัดไปด้วยค่ะ
Code (PHP)
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$objDB = mysql_select_db("mydatabase");
$strSQL = "SELECT * FROM customer";
//นับก่อนว่ามีทั้งหมดกี่แถว
$numRow=mysql_num_rows(mysql_query($strSQL));
//เฉพาะหน้าแรก ที่มีส่วนหัวกระดาษ จำนวนแถวเลยไม่เหมือนหน้าอื่น
$q=$strSQL . " limit 0,27"; //ตรงเลข 27 คือจำนวนแถวที่ให้แสดง
$objQuery = mysql_query($q);
$resultData = array();
for ($i=0;$i<mysql_num_rows($objQuery);$i++) {
$result = mysql_fetch_array($objQuery);
array_push($resultData,$result);
}
$pdf->ImprovedTable($header,$resultData);
//หน้าต่อๆ ไป
$a=27;$b=30; // a=row ข้อมูลที่จะให้เริ่มต้น b=จำนวนแถวที่ให้แสดง
if($numRow>$a){
while($a<$numRow){ //วน loop เรื่อยๆ จนกว่าจะครบจำนวนข้อมูล
$pdf->AddPage();
$q2=$strSQL . " limit ". $a ."," . $b; //สั่งให้เปลี่ยนค่าแถวที่ดึงในแต่ละหน้า
$objQuery = mysql_query($q2);
$resultData = array();
for ($i=0;$i<mysql_num_rows($objQuery);$i++) {
$result = mysql_fetch_array($objQuery);
array_push($resultData,$result);
}
$pdf->ImprovedTable($header,$resultData);
$a+=$b; //แถวเริ่มต้นในหน้าถัดไป
}
}
|
|
|
|
|
Date :
2012-11-12 19:21:40 |
By :
StarniC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
กด +1 ให้ครับ
|
|
|
|
|
Date :
2012-11-13 08:51:52 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ImprovedTable มันทำงานยังไง คับ ขอดูโค๊ด ได้ ไหม คับ
|
|
|
|
|
Date :
2012-11-14 13:21:30 |
By :
ico_2u |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำได้ แล้ว ครับ ขอบคุณ K StarniC กับ mr.win มากๆ ครับ
|
|
|
|
|
Date :
2012-11-15 14:04:54 |
By :
ico_2u |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|