2016-11-25 73 views
0

我試圖導出表格(過濾)從MySQL到PDF。從MySQL生成表格到PDF(使用PHP)

這裏的主要問題是,它只打印列表中的最後一個結果,而不是打印所有結果。

我試過其他代碼,但我仍然得到相同的結果。我不知道我的代碼有什麼問題:

<?php 
include("configsample.php"); 
?> 
<?php 

$string=$_GET['string']; 
$course=$_GET['course']; 
$category=$_GET['category']; 
$from=$_GET['from']; 
$to=$_GET['to']; 

if ($_REQUEST["string"]<>'') { 
$search_string = " AND restu_title LIKE '%".mysql_real_escape_string($_REQUEST["string"])."%'"; 
} 
if ($_REQUEST["course"]<>'') { 
$search_course = " AND restu_course='".mysql_real_escape_string($_REQUEST["course"])."'"; 
} 
if ($_REQUEST["category"]<>'') { 
$search_category = " AND category='".mysql_real_escape_string($_REQUEST["category"])."'"; 
} 


if ($_REQUEST["from"]<>'' and $_REQUEST["to"]<>'') { 
$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE restu_year BETWEEN '".mysql_real_escape_string($_REQUEST["from"])."' AND '".mysql_real_escape_string($_REQUEST["to"])."'".$search_string.$search_course; 
} else if ($_REQUEST["from"]<>'') { 
$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE restu_year = '".mysql_real_escape_string($_REQUEST["from"])."'".$search_string.$search_course; 
} else if ($_REQUEST["to"]<>'') { 
$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE restu_year = '".mysql_real_escape_string($_REQUEST["to"])."'".$search_string.$search_course; 
} else { 
$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE restu_id>0".$search_string.$search_course.$search_category; 
} 
$html='<table> 
<tr style="color:#010101; font:bold 13px Times New Roman; height:40px;"> 
<th>Research Title</th> 
<th>Year</th> 
<th>Proponent(s)</th> 
<th>Adviser</th> 
<th>Research Panel</th> 
</tr>'; 
$sql_result = mysql_query ($sql, $connection) or die ('request "Could not execute SQL query" '.$sql); 
if (mysql_num_rows($sql_result)>0) { 
while ($row = mysql_fetch_assoc($sql_result)){ 
$html2='<tr> 
<td style="padding:10px;">'.$row['restu_title'].'</td> 
<td style="padding:10px;">'.$row['restu_year'].'</td> 
<td style="padding:10px;">'.$row['restu_by'].'</td> 
<td style="padding:10px;">'.$row['restu_ad'].'</td> 
<td style="padding:10px;">'.$row['restu_panel'].'</td> 
</tr> 
</table>'; 
} 
} 

include("mpdf60/mpdf.php"); 
$mpdf=new mPDF('c','Letter','','',20,20,18,16,9,9,'L'); 
$mpdf->SetDisplayMode('fullpage'); 
$mpdf->AddPage('L'); 
$mpdf->WriteHTML($html); 
$mpdf->WriteHTML($html2); 
$mpdf->Output(); 
exit; 
?> 
+0

你在你的while循環覆蓋$ HTML2。只要有另一條記錄,它將被提取,並且html2將始終包含最後一條記錄的值。 – Twinfriends

回答

0

追加$ html2。您正在循環中分配值,因此它只顯示最後一條記錄。

使用這樣的..

$html2=$html2.'<tr> 
    <td style="padding:10px;">'.$row['restu_title'].'</td> 
    <td style="padding:10px;">'.$row['restu_year'].'</td> 
    <td style="padding:10px;">'.$row['restu_by'].'</td> 
    <td style="padding:10px;">'.$row['restu_ad'].'</td> 
    <td style="padding:10px;">'.$row['restu_panel'].'</td> 
    </tr>'; 
+0

感謝您的建議。我嘗試更換代碼,但它給了我這個錯誤:「mPDF錯誤:有些數據已經輸出到瀏覽器,無法發送PDF文件: –

2

您需要concatenate文本字符串,以避免$html2由下一個值覆蓋。

每次循環運行時,$html2都會被新值覆蓋。在你的情況,你只需要在等於符號前添加一個點:

while ($row = mysql_fetch_assoc($sql_result)){ 
    $html .='<tr> 
      <td style="padding:10px;">'.$row['restu_title'].'</td> 
      <td style="padding:10px;">'.$row['restu_year'].'</td> 
      <td style="padding:10px;">'.$row['restu_by'].'</td> 
      <td style="padding:10px;">'.$row['restu_ad'].'</td> 
      <td style="padding:10px;">'.$row['restu_panel'].'</td> 
    </tr>'; 
} 

小心正確地放置</table>。如果您的SQL請求沒有結果,表格將不會關閉,從而導致HTML無效。

你需要做的是這樣的:

$html='<table> 
    <tr style="color:#010101; font:bold 13px Times New Roman; height:40px;"> 
    <th>Research Title</th> 
    <th>Year</th> 
    <th>Proponent(s)</th> 
    <th>Adviser</th> 
    <th>Research Panel</th> 
    </tr>'; 
$sql_result = mysql_query ($sql, $connection) or die ('request "Could not execute SQL query" '.$sql); 
if (mysql_num_rows($sql_result)>0) { 
    while ($row = mysql_fetch_assoc($sql_result)){ 
     $html .='<tr> 
      <td style="padding:10px;">'.$row['restu_title'].'</td> 
      <td style="padding:10px;">'.$row['restu_year'].'</td> 
      <td style="padding:10px;">'.$row['restu_by'].'</td> 
      <td style="padding:10px;">'.$row['restu_ad'].'</td> 
      <td style="padding:10px;">'.$row['restu_panel'].'</td> 
      </tr>'; 
    } 
} 
$html .= '</table>'; 
+0

感謝您的建議。我試圖更換代碼,但它給了我這個錯誤: 「mPDF錯誤:有些數據已經輸出到瀏覽器,無法發送PDF文件: –

+0

當$ vardf->之前有var_dump或任何錯誤時,會發生此消息。嘗試使用var_dump($ html),而不必使用pdf查看是否沒有錯誤,關於de sql請求。 – Benoti