如何使用FPDF为特定ID从mySQL表生成pdf发票

问题描述 投票:0回答:2

我面临着获取特定ID的数据的问题。我希望用户获得链接以从按钮下载数据。这是mysqldatatable名称(add_courier):

id | order_inv |名称|日期|项目数量|价格|付款方式。

现在,我可以获取所有ID的列表,但无法获取特定ID的发票。这是我的代码:

<?php
require('fpdf.php');
$con=mysqli_connect('localhost','root','');
mysqli_select_db($con,'lexipressdb');


class PDF extends FPDF {
    function Header(){
        $this->SetFont('Arial','B',15);

        //dummy cell to put logo
        //$this->Cell(12,0,'',0,0);
        //is equivalent to:
        $this->Cell(12);

        //put logo
        $this->Image('gift.jpg',10,10,10);

        $this->Cell(100,10,'Invoice',0,1);

        //dummy cell to give line spacing
        //$this->Cell(0,5,'',0,1);
        //is equivalent to:
        $this->Ln(5);

        $this->SetFont('Arial','B',11);

        $this->SetFillColor(180,180,255);
        $this->SetDrawColor(180,180,255);
        $this->Cell(40,5,'Order Invoice',1,0,'',true);
        $this->Cell(25,5,'Quantity',1,0,'',true);
        $this->Cell(65,5,'Weight',1,0,'',true);
        $this->Cell(60,5,'Cost',1,1,'',true);

    }
    function Footer(){
        //add table's bottom line
        $this->Cell(190,0,'','T',1,'',true);

        //Go to 1.5 cm from bottom
        $this->SetY(-15);

        $this->SetFont('Arial','',8);

        //width = 0 means the cell is extended up to the right margin
        $this->Cell(0,10,'Page '.$this->PageNo()." / {pages}",0,0,'C');
    }
}


//A4 width : 219mm
//default margin : 10mm each side
//writable horizontal : 219-(10*2)=189mm

$pdf = new PDF('P','mm','A4'); //use new class

//define new alias for total page numbers
$pdf->AliasNbPages('{pages}');

$pdf->SetAutoPageBreak(true,15);
$pdf->AddPage();

$pdf->SetFont('Arial','',9);
$pdf->SetDrawColor(180,180,255);

$query=mysqli_query($con,"select * from add_courier");
while($data=mysqli_fetch_array($query)){
    $pdf->Cell(40,5,$data['order_inv'],'LR',0);
    $pdf->Cell(25,5,$data['r_qnty'],'LR',0);
    $pdf->Cell(60,5,$data['r_weight'],'LR',0);
    $pdf->Cell(60,5,$data['r_costtotal'],'LR',1);

}

$pdf->Output();
?>

我希望每个ID都具有这样的格式,以便用户可以从链接中下载它:'

<?php
require('fpdf.php');

//A4 width : 219mm
//default margin : 10mm each side
//writable horizontal : 219-(10*2)=189mm

$pdf = new FPDF('P','mm','A4');

$pdf->AddPage();

//set font to arial, bold, 14pt
$pdf->SetFont('Arial','B',14);

//Cell(width , height , text , border , end line , [align] )

$pdf->Cell(130  ,5,'Lexipress.CO',0,0);
$pdf->Cell(59   ,5,'INVOICE',0,1);//end of line

//set font to arial, regular, 12pt
$pdf->SetFont('Arial','',12);

$pdf->Cell(130  ,5,'[Street Address]',0,0);
$pdf->Cell(59   ,5,'',0,1);//end of line

$pdf->Cell(130  ,5,'[City, Country, ZIP]',0,0);
$pdf->Cell(25   ,5,'Date',0,0);
$pdf->Cell(34   ,5,'[dd/mm/yyyy]',0,1);//end of line

$pdf->Cell(130  ,5,'Phone [+12345678]',0,0);
$pdf->Cell(25   ,5,'Invoice #',0,0);
$pdf->Cell(34   ,5,'[1234567]',0,1);//end of line

$pdf->Cell(130  ,5,'Fax [+12345678]',0,0);
$pdf->Cell(25   ,5,'Customer ID',0,0);
$pdf->Cell(34   ,5,'[1234567]',0,1);//end of line

//make a dummy empty cell as a vertical spacer
$pdf->Cell(189  ,10,'',0,1);//end of line

//billing address
$pdf->Cell(100  ,5,'Bill to',0,1);//end of line

//add dummy cell at beginning of each line for indentation
$pdf->Cell(10   ,5,'',0,0);
$pdf->Cell(90   ,5,'[Name]',0,1);

$pdf->Cell(10   ,5,'',0,0);
$pdf->Cell(90   ,5,'[Company Name]',0,1);

$pdf->Cell(10   ,5,'',0,0);
$pdf->Cell(90   ,5,'[Address]',0,1);

$pdf->Cell(10   ,5,'',0,0);
$pdf->Cell(90   ,5,'[Phone]',0,1);

//make a dummy empty cell as a vertical spacer
$pdf->Cell(189  ,10,'',0,1);//end of line

//invoice contents
$pdf->SetFont('Arial','B',12);

$pdf->Cell(130  ,5,'Description',1,0);
$pdf->Cell(25   ,5,'Taxable',1,0);
$pdf->Cell(34   ,5,'Amount',1,1);//end of line

$pdf->SetFont('Arial','',12);

//Numbers are right-aligned so we give 'R' after new line parameter

$pdf->Cell(130  ,5,'UltraCool Fridge',1,0);
$pdf->Cell(25   ,5,'-',1,0);
$pdf->Cell(34   ,5,'3,250',1,1,'R');//end of line

$pdf->Cell(130  ,5,'Supaclean Diswasher',1,0);
$pdf->Cell(25   ,5,'-',1,0);
$pdf->Cell(34   ,5,'1,200',1,1,'R');//end of line

$pdf->Cell(130  ,5,'Something Else',1,0);
$pdf->Cell(25   ,5,'-',1,0);
$pdf->Cell(34   ,5,'1,000',1,1,'R');//end of line

//summary
$pdf->Cell(130  ,5,'',0,0);
$pdf->Cell(25   ,5,'Subtotal',0,0);
$pdf->Cell(4    ,5,'$',1,0);
$pdf->Cell(30   ,5,'4,450',1,1,'R');//end of line

$pdf->Cell(130  ,5,'',0,0);
$pdf->Cell(25   ,5,'Taxable',0,0);
$pdf->Cell(4    ,5,'$',1,0);
$pdf->Cell(30   ,5,'0',1,1,'R');//end of line

$pdf->Cell(130  ,5,'',0,0);
$pdf->Cell(25   ,5,'Tax Rate',0,0);
$pdf->Cell(4    ,5,'$',1,0);
$pdf->Cell(30   ,5,'10%',1,1,'R');//end of line

$pdf->Cell(130  ,5,'',0,0);
$pdf->Cell(25   ,5,'Total Due',0,0);
$pdf->Cell(4    ,5,'$',1,0);
$pdf->Cell(30   ,5,'4,450',1,1,'R');//end of line

$pdf->Output();
?>

我不知道该怎么做。有人可以帮忙吗?我也检查了其他问题是否存在相同的问题,但我没有得到应有的重视。

php mysql pdf invoice
2个回答
0
投票
$sql=mysqli_query($con,"select * from add_courier");
foreach loop starts here 
<button > <a href="printme.php&id=<?php echo $row['id']?>">Print</a>
</button>

每个循环在这里结束

在您的FPDF页面中获得ID变量

//示例//

require('fpdf.php');
$con=mysqli_connect('localhost','root','');
mysqli_select_db($con,'lexipressdb');
$id=$_GET['id'];

在FPDF页面上用此更改您的查询

$query=mysqli_query($con,"select * from add_courier where id='$id'");

0
投票
<table>
                                  <thead>
                              <th style="font-weight:bold;">Tracking</th>
                              <th style="font-weight:bold;">Print Invoice</th>               

                                        </thead>
                                        <tbody>

                 <?php
$ret=mysqli_query($con,"select *from add_courier");
$cnt=1;
while ($row=mysqli_fetch_array($ret)) {

?>                                        
            <tr>

             <td style="font-weight:bold;"><?php  echo $row['trackingid'];?>
             </td>
             <td>
              <a href="invoice/generate_pdf.php?id=<?php  echo $row['trackingid'];
              //this is your tracking primary key column name
              ?>">Generate</a>
             </td>
             </tr>

<?php
}
?>           
</tbody>     
 </table>

          --------------------------------------------------------------------------------------------------------

generate_pdf.php代码

 <?php
require('fpdf.php');
$con=mysqli_connect('localhost','root','');
mysqli_select_db($con,'lexipressdb');
$id=$_GET['id'];

//请先回显并检查id值

echo $id; exit;

//如果您单击生成链接时获得ID,则在上面的行中注释并享受

class PDF extends FPDF {
    function Header(){
        $this->SetFont('Arial','B',15);

        //dummy cell to put logo
        //$this->Cell(12,0,'',0,0);
        //is equivalent to:
        $this->Cell(12);

        //put logo
        $this->Image('gift.jpg',10,10,10);

        $this->Cell(100,10,'Invoice',0,1);

        //dummy cell to give line spacing
        //$this->Cell(0,5,'',0,1);
        //is equivalent to:
        $this->Ln(5);

        $this->SetFont('Arial','B',11);

        $this->SetFillColor(180,180,255);
        $this->SetDrawColor(180,180,255);
        $this->Cell(40,5,'Order Invoice',1,0,'',true);
        $this->Cell(25,5,'Quantity',1,0,'',true);
        $this->Cell(65,5,'Weight',1,0,'',true);
        $this->Cell(60,5,'Cost',1,1,'',true);

    }
    function Footer(){
        //add table's bottom line
        $this->Cell(190,0,'','T',1,'',true);

        //Go to 1.5 cm from bottom
        $this->SetY(-15);

        $this->SetFont('Arial','',8);

        //width = 0 means the cell is extended up to the right margin
        $this->Cell(0,10,'Page '.$this->PageNo()." / {pages}",0,0,'C');
    }
}


//A4 width : 219mm
//default margin : 10mm each side
//writable horizontal : 219-(10*2)=189mm

$pdf = new PDF('P','mm','A4'); //use new class

//define new alias for total page numbers
$pdf->AliasNbPages('{pages}');

$pdf->SetAutoPageBreak(true,15);
$pdf->AddPage();

$pdf->SetFont('Arial','',9);
$pdf->SetDrawColor(180,180,255);

$query=mysqli_query($con,"select * from add_courier where id='$id'");
while($data=mysqli_fetch_array($query)){
    $pdf->Cell(40,5,$data['order_inv'],'LR',0);
    $pdf->Cell(25,5,$data['r_qnty'],'LR',0);
    $pdf->Cell(60,5,$data['r_weight'],'LR',0);
    $pdf->Cell(60,5,$data['r_costtotal'],'LR',1);

}



$pdf->Output();
?>
© www.soinside.com 2019 - 2024. All rights reserved.