【问题标题】:How to generate a pdf invoice from mySQL table using FPDF for a specfic id如何使用 FPDF 为特定 id 从 mySQL 表生成 pdf 发票
【发布时间】:2020-01-06 08:30:39
【问题描述】:

我在获取特定 ID 的数据时遇到问题。我希望用户获得从按钮下载数据的链接。这是mysql数据表名(add_courier):

标识 | 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


    【解决方案1】:
    $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'");
    

    【讨论】:

    【解决方案2】:
    <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>
    
              --------------------------------------------------------------------------------------------------------
    

    生成_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();
    ?>
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签