|
|
|
ผมใช้ tcpdf แล้วเวลาดึงข้อมูลมาจาก Database แล้วมันทับซ้อนกัน มีวิธีแก้ยังไงครับ Code อยู่ด้านล่าง |
|
|
|
|
|
|
|
Code (PHP)
<?php
ob_start(); // ทำการเก็บค่า html นะครับ
require_once('tcpdf/tcpdf.php'); //ที่อยู่ของไฟล์ tcpdf.php ในเครื่องเรานะครับ
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript">
$(document).ready(function() {
$("#myTable").tablesorter();
});
</script>
</head>
<body>
<?php
$r=1;
$ss=explode("-",$_POST[datestart]);
$start = $ss[0].$ss[1].$ss[2];
$ee=explode("-",$_POST[dateend]);
$end = $ee[0].$ee[1].$ee[2];
ob_clean() ;
$html = ob_get_contents(); //เก็บค่า html ไว้ใน $html
$pdf=new TCPDF('L','mm','A4');
$pdf->SetMargins(2,2,2,2);
$pdf->AddPage();
$pdf->Image('STFG.jpg', 2,2, 290, 180);
$page=1;
$pdf->AddFont('thsarabun','','thsarabun.php');
$pdf->SetFont('thsarabun', '', 12);
ini_set('memory_limit', '30M'); //ปรับขนาดที่ต้องการจนกว่ามันจะไม่ error
ini_set('max_execution_time', '60'); //อันนี้แถมเผื่อเวลาโปรเซสไม่พอ
$servername = 'erpserver';
$databasename = 'MISCOM';
$user = 'admin';
$pass = 'NiTi2533';
$connection_string = "DRIVER={SQL Server};SERVER=$servername;DATABASE=$databasename;AutoTranslate=yes";
$dns = odbc_connect($connection_string,$user, $pass) or die ("เชื่อมต่อ server ไม่ได้");
$strSQL = "
SELECT
dbo.OEORDH.ORDNUMBER,
dbo.OEORDH.CUSTOMER,
dbo.OEORDH.BILNAME,
dbo.OEORDH.PONUMBER,
dbo.OEORDH.TERMS,
dbo.OEORDH.ORDDATE,
dbo.OEORDD.LINENUM,
dbo.OEORDD.ITEM,
dbo.OEORDD.[DESC],
dbo.OEORDD.EXPDATE,
dbo.OEORDD.QTYORDERED,
dbo.OEORDD.QTYBACKORD,
dbo.OEORDD.QTYSHPTODT,
dbo.OEORDD.ORIGQTY,
dbo.OEORDD.CUSTITEMNO,
dbo.OEORDD.QTYTRUECOM,
dbo.ARCUS.CODESLSP1,
dbo.ICILOC.LOCATION,
dbo.ICILOC.QTYONHAND
FROM
dbo.OEORDH
INNER JOIN dbo.OEORDD ON dbo.OEORDH.ORDUNIQ = dbo.OEORDD.ORDUNIQ
INNER JOIN dbo.ARCUS ON dbo.OEORDH.CUSTOMER = dbo.ARCUS.IDCUST
INNER JOIN dbo.ICITEM ON dbo.OEORDD.ITEM = dbo.ICITEM.FMTITEMNO
INNER JOIN dbo.ICILOC ON dbo.ICITEM.ITEMNO = dbo.ICILOC.ITEMNO
WHERE
(dbo.OEORDD.EXPDATE BETWEEN '20171122' and '20171122') and
dbo.OEORDD.QTYBACKORD <> 0 and dbo.OEORDD.CUSTITEMNO <>'' and dbo.ICILOC.LOCATION='FG'
Order by dbo.OEORDH.CUSTOMER ASC
";
$objExec = odbc_exec($dns, $strSQL) or die ("Error Execute [".$strSQL."]");
while ($objResult = odbc_fetch_array($objExec))
{
$pdf->writeHTMLCELL(60,10,12,26.5,substr($objResult[CUSTITEMNO],0,7));
$pdf->writeHTMLCell(60,10,53,26.5,"$objResult[EXPDATE]");
$pdf->writeHTMLCell(60,10,80,26.5,"$objResult[ORDNUMBER]");
$pdf->writeHTMLCell(60,10,120,26.5,"$objResult[CUSTOMER]");
$pdf->writeHTMLCell(60,10,135,26.5,substr($objResult[BILNAME],0,20));
$pdf->writeHTMLCell(20,10,193.5,26.5,"$objResult[TERMS]");
$pdf->writeHTMLCell(20,10,204.5,26.5,number_format($objResult[QTYORDERED]));
$pdf->writeHTMLCell(20,10,218.5,26.5,number_format($objResult[QTYSHPTODT]));
$pdf->writeHTMLCell(20,10,228,26.5,number_format($objResult[QTYBACKORD]));
$pdf->writeHTMLCell(20,10,239,26.5,number_format($objResult[QTYONHAND]));
$pdf->writeHTMLCell(20,10,249,26.5,"$objResult[CODESLSP1]");
}
$pdf->Output("MyPDF/report.pdf");
?>
<script language=Javascript>top.location.href="MyPDF/report.pdf";</script>
</body>
</html>
Tag : - - - -
|
ประวัติการแก้ไข 2017-11-22 09:21:27
|
|
|
|
|
Date :
2017-11-22 09:14:46 |
By :
uthenrock |
View :
2547 |
Reply :
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อธิบายอะไรที่มันทับซ้อนกันด้วยครับ
ส่วนใหญ่การป้องกันการทับซ้อนก็จะใช้ distinct หรือ group by
|
|
|
|
|
Date :
2017-11-22 10:09:29 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ๋อขอโทษทีครับข้อมูลที่ดึงออกมาจาก Database มันทับกันอยู่ครับ คือผมอยากให้มันเรียงลงมาตามลำดับอะครับ
|
|
|
|
|
Date :
2017-11-22 10:28:22 |
By :
uthenrock |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เรื่อง pdf คงต้องรอท่านอื่นแล้วละครับ ผมไม่เคยใช้
แค่คิดว่าผู้ใช้สามารถใช้โปรแกรมอื่นๆ แปลง html เป็นไฟล์ pdf ได้เองอะครับ
|
|
|
|
|
Date :
2017-11-22 10:52:48 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองหาอ่านดูแล้วยังไม่เจอเลยครับถ้าเป็นข้อความปกติมันทำได้ แต่อันนี้ดึงข้อมูลมาจาก Database แล้วข้อมูลมันไม่เรียงลงมาตามลำดับมันซ้อนกันอยู่แค่บรรทัดแรก
|
|
|
|
|
Date :
2017-11-23 10:11:20 |
By :
uthenrock |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ๋อตรงนั้นมันเป็นการปรับให้ข้อมูลที่ดึงมาแต่ละอันอยู่บรรทัดเดียวกันครับ แต่ที่ผมยังแก้ไม่ได้คือทำยังไงให้ข้อมูลที่ซ้อนอยู่ข้างหลังลงมาอยู่บรรทัดใหม่ 5555 หาเท่าไหร่ก็ไม่เจอ
|
|
|
|
|
Date :
2017-11-23 11:06:31 |
By :
uthenrock |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$pdf->writeHTMLCELL(60,10,12,26.5,substr($objResult[CUSTITEMNO],0,7));
$pdf->writeHTMLCell(60,10,53,26.5,"$objResult[EXPDATE]");
$pdf->writeHTMLCell(60,10,80,26.5,"$objResult[ORDNUMBER]");
$pdf->writeHTMLCell(60,10,120,26.5,"$objResult[CUSTOMER]");
$pdf->writeHTMLCell(60,10,135,26.5,substr($objResult[BILNAME],0,20));
$pdf->writeHTMLCell(20,10,193.5,26.5,"$objResult[TERMS]");
$pdf->writeHTMLCell(20,10,204.5,26.5,number_format($objResult[QTYORDERED]));
$pdf->writeHTMLCell(20,10,218.5,26.5,number_format($objResult[QTYSHPTODT]));
$pdf->writeHTMLCell(20,10,228,26.5,number_format($objResult[QTYBACKORD]));
$pdf->writeHTMLCell(20,10,239,26.5,number_format($objResult[QTYONHAND]));
$pdf->writeHTMLCell(20,10,249,26.5,"$objResult[CODESLSP1]");
ตรงค่า y 26.5 มันก็คือขยับบรรทัดลงมานั้นแหละแต่ข้อมูลที่ซ้อนกันอยู่ข้างหลังมันก็ขยับลงมาตามครับ
|
|
|
|
|
Date :
2017-11-23 11:12:52 |
By :
uthenrock |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลอง ใส่ <br /> บันทัดสุดท้ายดู
Code (PHP)
$pdf->writeHTMLCell(20,10,249,26.5,"$objResult[CODESLSP1]".'<br />');
หรือทำเป็นตัวแปร
Code (PHP)
$y = 26.5;
while(...){
$pdf->writeHTMLCell(20,10,249, $y,".....");
$pdf->writeHTMLCell(40,10,300, $y,".....");
$y += 50;
}
ปล.เนื่องจากไม่เคยใช้ ก็ทดลองไปด้วยกันเลย 5555
|
ประวัติการแก้ไข 2017-11-23 11:47:19
|
|
|
|
Date :
2017-11-23 11:43:36 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แล้วครับขอบคุณมากเลยครับ ใส่ $y เข้าไป แล้วก็ใส่ค่าความห่างของแต่ละบรรทัดขอบคุณมากเลยครับ คุณ Chaidhanan
|
|
|
|
|
Date :
2017-11-23 14:31:50 |
By :
uthenrock |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|