프로젝트 작업 중이고 FPDF를 사용하여 제품 세부 정보의 pdf를 생성해야합니다. 제품 세부 정보는 배열로 전달되며 다음과 같이 배열 '$ prod_details'의 각 변수 요소를 'PDF'클래스의 함수에 가져 오려면 다음이 필요합니다.PHP : 배열 요소를 fpdf의 클래스 함수로 전달
전달 방법 변수 배열 요소 :
$this->Cell(30,8,$prod_data['prod_name'],0,0,'C');
$this->Cell(30,10,$prod_data['company_name']);
$this->Cell(20,8,$prod_data['prod_cost'],0,0,'C');
나는이 스크립트를 실행 시도했지만 내가 오류 메시지가 '하늘의 속성에 액세스 할 수 없습니다'를 점점 계속 ...
<?php
@include_once("includes/db.php");
require('fpdf/fpdf.php');
@include_once("includes/class_product_info.php");
$obj = new allProducts();
$prod_data = array();
if(isset($_GET['c_id'])){
$prod_data = $obj->getProdDetails($_GET['c_id']);
class PDF extends FPDF
{
public $prod_data;
public function createData($input){
$this->prod_data = $input;
}
function Header()
{
// Logo
$this->Image('big_logo.png',10,6,30);
// Arial bold 15
$this->SetFont('Arial','B',20);
// Move to the right
$this->Cell(40);
// Title
$this->Cell(30,10,$this->prod_data['company_name']);
// Draw an header line
$this->Line(10,26,200,26);
// Line break
$this->Ln(20);
}
function Footer()
{
// Position at 1.5 cm from bottom
$this->SetY(-15);
// Begin with regular font
$this->SetFont('Arial','',9);
// Then put a blue underlined link
//$this->SetTextColor(0,0,255);
$this->SetFont('','U');
$this->Write(10,$this->prod_data['company_name'],'http://www.skills.com');
// Arial italic 8
$this->SetFont('Arial','I',9);
// Page number
$this->Cell(0,10,'Page '.$this->PageNo().' ',0,0,'R');
}
function prodDetailTop()
{
// Course title cell
$this->Cell('',10,'',0,0,'C');
$this->Ln();
/* Build cells for the first row */
$this->SetFont('Arial','',10);
$this->SetY(40);
// First Row
$this->Cell(35,8,'Product Name : ',0,0,'L');
$this->Cell(30,8,$this->prod_data['prod_name'],0,0,'C');
$this->SetX(150);
$this->Cell(25,8,'Product Cost : ',0,0,'L');
$this->Cell(20,8,$this->prod_data['prod_cost'],0,0,'C');
$this->Ln();
// Second Row
$this->Cell(35,8,'Discount : ',0,0,'L');
$this->Cell(30,8,$this->prod_data['disc_amt'],0,0,'L');
$this->SetX(150);
$this->Cell(25,8,'No Purchased : ',0,0,'L');
$this->Cell(20,8,$this->prod_data['items_count'].' product(s)',0,0,'L');
$this->Ln();
}
function prodDetailBtm()
{
$this->SetY(80);
$this->Write(10,$this->prod_data['prod_desc']);
}
function generatePageData()
{
$this->AddPage();
$this->prodDetailTop();
$this->prodDetailBtm();
}
}
$pdf = new PDF();
$pdf->createData($prod_data);
//$pdf->Header();
$pdf->generatePageData();
$pdf->Output();
}
else {
?>
<script language="javascript">
window.location = "prod_invoice_err.php";
</script>
<?php
}
?>
아래의 코드를 찾을 수
도움을 얻기를 바랍니다.
시간을내어 도와 주셔서 감사합니다. 나는 질문을 다시 편집했으며, 지금은 더 구체적이다. 코드를 다시 읽은 후 코드를 통해 진행할 과제를 이해했으면합니다. 감사합니다. –
오케이. 우선, setData를 호출하고 있지만이 함수를 정의하지 않았습니다. 당신이 createData를 호출 한 것 같습니다. 둘째, 네이밍 충돌이 발생했습니다. $ prod_data의 클래스 속성에 액세스하려는 경우 $ this-> prod_data [ 'whatever_key']를 사용해야합니다. 그래서 $ this-에 변수 참조를 변경 한 후, createData에 메서드 호출을 변경하려고 있는지 실제로 사용하려는 데이터를 포함 할 배열에 위해서 var_dump를 수행하고> prod_data 대신 $ prod_data의. – Ryan
도움을 주셔서 대단히 감사드립니다. 메서드 이름을 수정하고 클래스 속성에 액세스하는 방법을 수정했지만 데이터베이스 연결 스크립트 (db.php)가 포함되어 있지 않고 모든 것이 제대로 작동 할 때까지 빈 배열을 가져 오는 것이 아닙니다. 다시 한번 감사합니다. –