2017-11-14 50 views
0

PHPを使用してダウンロードできる動的PDFファイルを作成しようとしています。私は以下のコードを含んでいます。文書に空白のデータが表示され、PDFファイルには何も表示されません。サーバから動的データを引き出し、TCPDFを使用してPDFに表示

<?php 
$output = ''; 
$quote = $_GET['quote']; 
function fetchData(){ 
    include 'config.php'; 
    $quote = $_GET['quote']; 
    $output = ''; 
    $query = "SELECT * FROM quote_list, quotation WHERE quote_list.quote_id = quotation.id AND quote_list.quote_id = '$quote'"; 
    $result = mysqli_query($connect, $query); 

    if($row = mysqli_fetch_assoc($result)){ 

    $companyName = $row['name']; 
    $email = $row['email']; 

    $countQuery = "SELECT COUNT(quotation.id) AS countRow FROM quotation WHERE company_name = '$companyName'"; 
    $countRes = mysqli_query($connect, $countQuery); 

    while($countRow = mysqli_fetch_assoc($countRes)){ 
     $count = $countRow['countRow']; 
    } 

    $quoteNum = $companyName . ' - ' .$count; 

    $sqlDate = $row['date']; 
    $date = strtotime($sqlDate); 
    $date = date('j F Y', $date); 

    $output .= " 
    <div class='row'> 
     <div class='col'> 
      <img class='logo' src='img/logo.jpg'> 
     </div> 
    </div> 

    <div class='row margin'> 
     <div class='col'> 
      <strong><h3>To:" . $companyName . "</h3> 
      Email:". $email."</strong> 
     </div> 
    </div> 

    <div class='row margin'> 
     <div class='col'>Quotation Number:". $quoteNum ."</div> 
    </div> 

    <div class='row'> 
     <div class='col'>Issue Date:". $date ."</div> 
    </div> 

    <div class='row margin'> 
     <div class='col'> 
      <p>Further to your enquiry, please find attached our quotation based on your discussed requirements. If you have any other queries, amendments or your requirements change please do not hesitate to contact me.</p> 
      <p>Thank you for the opportunity to quote on this project.</p> 
     </div> 
    </div> 

    <div class='row margin'> 
     <div class='col'> 
      <h1>Your quotation:</h1> 
      <table class='table table-bordered table-striped table-condensed table-responsive'> 
       <thead> 
        <tr> 
         <th> 
          Quote Details 
         </th> 
         <th class='float-right'> 
          Amount Quoted 
         </th> 
        </tr> 
       </thead> 
       <tbody>"; 

       $query = "SELECT * FROM quote_list, quotation WHERE quote_list.quote_id = quotation.id AND quote_list.quote_id = '$quote'"; 
       $result = mysqli_query($connect, $query); 
       $total = 0; 
       $discount = 0; 

       while($row = mysqli_fetch_assoc($result)){ 
        $title = $row['title']; 
        $price = $row['price']; 
        $discount = $row['discount']; 
        $total += $price; 

        $ouput .= 
        " 
        <tr> 
         <td>". 
          $title." 
         </td> 
         <td class='float-right'> 
          £".$price. 
          " 
         </td> 
        </tr>  
        "; 
       } 

       $final = $total-$discount; 



       $output .= " 
        <tr> 
         <td></td> 
         <td class='float-right'><em><strong>Total: </strong></em>£".$total."</br><em><strong>Discount: </strong></em>£".$discount."</br><em><strong>Quotation Price: </strong></em>£".$final."</td> 
        </tr> 
       </tbody> 
       </table> 
     </div> 
    </div> 

    <div class='row margin'> 
     <div class='col'> 
      <h1>Terms and Conditions</h1> 
      <h2>Our Quotation</h2> 
      <p>The above costs are inclusive of VAT, which will be charged where applicable. NI Flyers Print & Design quotations are valid for 30 days. Design costs are based on our understanding of your initial brief. Any additional amends/change to brief will be advised prior to invoicing. The right of design creations remains exclusively with NI Flyers Print & Design including economic and moral rights. Acceptance of this quotation includes a non-exclusive licence for the use of the works outlined above. An exclusive licence may be obtained at an additional cost.</p> 

      <h2>Additional photographic or illustration-based imagery</h2> 
      <p>Sourced photography or illustration this will be an additional cost to the design process. Imagery can be sourced either from stock library at £30.00 per image, or commissioned at cost, which will always be pre-quoted. If attendance to manage or art direct photoshoots is required this will be based on our standard hourly rate of £50 per hour. Additional photoshoot props or services will be charged accordingly.</p> 

     </div> 
    </div> 
"; 
    } 
     return $output; 
    } 

if(isset($_GET['viewPDF'])){ 
    require_once('tcpdf/tcpdf.php'); 
    $obj_pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); 
    $obj_pdf->SetCreator(PDF_CREATOR); 
    $obj_pdf->SetTitle("Generate HTML Table Data To PDF From MySQL Database Using TCPDF In PHP"); 
    $obj_pdf->SetHeaderData('', '', PDF_HEADER_TITLE, PDF_HEADER_STRING); 
    $obj_pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); 
    $obj_pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); 
    $obj_pdf->SetDefaultMonospacedFont('helvetica'); 
    $obj_pdf->SetFooterMargin(PDF_MARGIN_FOOTER); 
    $obj_pdf->SetMargins(PDF_MARGIN_LEFT, '10', PDF_MARGIN_RIGHT); 
    $obj_pdf->setPrintHeader(false); 
    $obj_pdf->setPrintFooter(false); 
    $obj_pdf->SetAutoPageBreak(TRUE, 10); 
    $obj_pdf->SetFont('helvetica', '', 11); 
    $obj_pdf->AddPage(); 
    $output .= fetchData(); 
    $obj_pdf->writeHTML($output); 
    $obj_pdf->Output('Quote_' . $quote . '.pdf', 'I'); 
} 
?> 

この文書の作成に間違いがありますか?私はこれに関するチュートリアルとドキュメンテーションに従っていて、それをまったく読み込めないように見えます。何らかの理由で常に空白のPDF文書。 PHPを使ってPDFを動的に作成するときに使用する簡単なツールはありますか?

答えて

0

fetchData()関数は何も返さないようです。

私が修正した場合:

$obj_pdf->writeHTML($output); 

を...

$obj_pdf->writeHTML('hello world'); 

を読み取るには、これは正しくPDFで表示されます。これはあなたのTCPDFコードが正しいことを確認しているようです。

私はあなたのコードをローカルで実行すると、fetchData()関数から返されるものは得られません。明らかに私はあなたのデータベースをセットアップしていないが、これはあなたの問題がどこにあるのかと思う。

関数全体でいくつかのエコーを追加して、あなたの考えが返されていることを確認してください。

+0

私はデータをエコーし​​ようとしましたが、まだ返されません。私のfetchData()関数が何かをしていないと何かが起きています。ありがとう。私が期待しているのはこれです - > http://adonnelly759.students.cs.qub.ac.uk/niflyers/viewQuote.php?quoteID=19、ちょうどPDFフォーマット –

+0

うん、HTMLがよさそうだね。これは間違いなくクエリの問題です。 $ result = mysqli_query($ connect、$ query);で$ connectが定義されているように見えません。それはおそらく何かを見ているでしょう – Chris

関連する問題