2015-02-06 4 views
0

Я использую класс mPDF для вывода pdf данных из файла PHP. Мне нужно выполнить цикл запроса SQL Server, сохранить как новые переменные и записать в $ html, чтобы он мог выводиться в pdf. Я не могу поместить его в функцию WriteHTML, потому что он не распознает PHP-код. Мне нужно содержимое всего массива, поэтому я не могу просто напечатать одну переменную.Получение переменных из SQL Server для mPDF

У меня есть два файла:

PDF-test.php:
Этот файл собирает переменные сеанса из других PHP файлов, которые включены и перераспределяет их, так что я могу использовать их в $ html.

<?php 
// Include files 
require_once("form.php"); 
require_once("configuration.php"); 

session_start(); 

$html = ' 
<h3> Form A </h3> 
<div> 
    <table> 
     <thead> 
      <tr> 
       <th colspan="3">1. Contact Information</th> 
      </tr> 
     </thead> 
      <tr> 
       <td> First Name: </td> 
       <td> Last Name: </td> 
      </tr> 
      <tr> 
       <td>'.$firstName.'</td> 
       <td>'.$lastName.'</td> 
      </tr> 
     . 
     . 
     . 
    </table> 
    '; 
echo $html; 

PDF-make.php: Этот файл содержит код, чтобы фактически преобразовать содержимое PDF-test.php в формате PDF.

<?php 
// Direct to the mpdf file. 
include('mpdf/mpdf.php'); 

// Collect all the content. 
ob_start(); 
include "pdf-test.php"; 
$template = ob_get_contents(); 
ob_end_clean(); 

$mpdf=new mPDF(); 
$mpdf->WriteHTML($template); 

// I: send the file inline to the browser. 
$mpdf->Output('cust-form-a', 'I'); 
?> 

Это мой цикл:

$tbl = "form_Customers"; 
$sql = "SELECT ROW_NUMBER() OVER(ORDER BY custFirt ASC) 
          AS RowNumber, 
           formID,  
           custFirt, 
           custLast, 
           displayRecord 
          FROM $tbl 
          WHERE formID = ? and displayRecord = ?"; 
$param = array($_SESSION["formid"], 'Y'); 
$stmt = sqlsrv_query($m_conn, $sql, $param); 
$row = sqlsrv_fetch_array($stmt); 

while ($row = sqlsrv_fetch_array($stmt)) { 
    $rowNum = $row['RowNumber']; 
    $firstN = $row['custFirt']; 
    $lastN = $row['custLast']; 
} 

Когда я пытаюсь включить $ RowNum, $ firstN или $ lastN в $ HTML, такие как

<td> '.$rowNum.'</td> 

, он просто отображается пустым. Я не уверен, где цикл должен идти (какой файл) или как включить $ RowNum, $ firstN и $ lastN переменные в $ HTML, как другие.

Я новичок в PHP (и относительно новичок в кодировании в целом), и у меня нет большого опыта работы с ним, но мне удалось заставить mPDF работать для меня в подобных случаях без запроса ,

Любая помощь была бы принята с благодарностью. Спасибо огромное!

ответ

0

Я не уверен, как ваш цикл взаимодействует с двумя другими файлами, но это выглядит слишком сложным для меня. Я бы подойти к этому в одном файле .php, что-то вроде этого:

<?php 
//Include Files 
include('mpdf/mpdf.php'); 
... //Your additional includes 

//Define a row template string 
$rowtemplate =<<<EOS 
    <tr> 
     <td>%%RowNumber%%</td> 
     <td>%%custFirt%%</td> 
     <td>%%custLast%%</td> 
    </tr> 
EOS; 

//Initialize the HTML for the document. 
$html =<<<EOS 
<h3> Form A </h3> 
... //Your code 
       <td> Last Name: </td> 
      </tr> 
EOS; 

//Loop Code 
$tbl = "form_Customers"; 
... //Your code 
$row = sqlsrv_fetch_array($stmt); 

while ($row = sqlsrv_fetch_array($stmt)) { 
    //Copy rowtemplate to a temporary variable 
    $out_tmp = $rowtemplate; 
    //Loop through your SQL variables and replace them when they appear in the template 
    foreach ($row as $key => $val) { 
     $out_tmp = str_ireplace('%%'.$key.'%%', $val, $out_tmp); 
    } 
    //Append the result to $html 
    $html .= $out_tmp; 
} 

// Close the open tags in $html 
$html .= "</table></div>"; 

//Write the PDF 
$mpdf=new mPDF(); 
$mpdf->WriteHTML($html); 
$mpdf->Output('cust-form-a', 'I'); 

Я использую heredoc syntax для строк, так как я думаю, что это самый чистый способ включить большую строку.

Кроме того, я предпочитаю omit the closing ?> tag, поскольку он вводит глупый источник ошибок.

+0

Ошибка анализа: синтаксическая ошибка, неожиданная '%' на 'foreach ($ row as $ key =>% val) {' –

+0

Я ошибся. Это '$ val' не'% val'. – cpilko

Смежные вопросы