Как создать счет в формате PDF из таблицы mySQL с использованием FPDF для идентификатора спецификации c - PullRequest
0 голосов
/ 06 января 2020

Я столкнулся с проблемой получения данных для указанного c идентификатора. Я хочу, чтобы пользователь получил ссылку для загрузки данных с кнопки. Это mysqldatatable имя (add_courier):

id | order_inv | имя | дата | количество предметов | цена | Режим оплаты.

Теперь я могу получить список всех идентификаторов, но не могу получить счет для указанного c идентификатора. Вот мой код:

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

Я хочу, чтобы мой формат был таким, как этот, для каждого идентификатора, чтобы пользователь мог скачать его по ссылке: '

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

Дон не знаю как go об этом. Может кто-нибудь помочь, пожалуйста? Я также проверил другие вопросы на те же проблемы, но я не получаю разрешение ».

Ответы [ 2 ]

2 голосов
/ 06 января 2020
<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'];

// пожалуйста, сначала введите эхо и проверьте значение идентификатора

echo $id; exit;

//, если вы получили идентификатор при нажатии кнопки generate затем прокомментируйте вышеприведенную строку и наслаждайтесь

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();
?>
2 голосов
/ 06 января 2020
$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>

для каждого l oop заканчивается здесь

на вашей странице FPDF получить идентификатор переменной

// пример //

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'");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...