2017-04-20 106 views
2

這是我的第一個問題。 我正在嘗試使用mpdf從我的數據庫的特定行生成pdf。我希望代碼在需要時下載特定行的數據。 下載鏈接位於每行旁邊。當下載按鈕被按下時,它將下載該行的數據。 代碼正在工作,但它正在從數據庫中獲取所有值並將值並排分配。 這裏是我的生成PDF的PHP無法從mysql數據庫中獲取特定的行

<?php 

//============================================================== 
//============================================================== 
//============================================================== 
include("mpdf/mpdf.php"); 
include "config.php"; 

$res = mysql_query("select date1, date2 from test"); 
if (!$res) 
    die("query error : ".mysql_error()); 
$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); 
$mpdf->SetDisplayMode('fullpage'); 
$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first 
level of a list 
// LOAD a stylesheet 
$stylesheet = file_get_contents('mpdfstyletables.css'); 
$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is  
css/style only and no body/html/text 
$html = ' 

<center><h3>Test</h3></center> 
<center> 
<table border="1"> 
<tr> 
<th>Date 1</th><th>Date 2</th> 
</tr> 
<tr>'; 

while($row = mysql_fetch_array($res)){ 
$html .= 
    '<td>'.$row['date1'].'</td> 
    <td>' . $row['date2']. '</td>'; 
} 
$html .= ' 
</tr> 
</table></center> 
'; 
$mpdf->WriteHTML($html,2); 
$mpdf->Output('mpdf.pdf','I'); 
exit; 
//============================================================== 
//============================================================== 
//============================================================== 
?> 

,這裏是查看數據庫

<html> 
<body> 
<style> 
    table { 
font-family: arial, sans-serif; 
border-collapse: collapse; 
width: 100%; 
} 

td, th { 

text-align: center; 
padding: 8px; 
} 

tr:nth-child(even) { 
background-color: #dddddd; 
} 

    textarea 
{ 
    width:100%; 
} 
.textwrapper 
{ 
    border:1px solid #dddddd; 
    margin:5px 0; 
    padding:1px; 
} 
    </style> 
<?php 
mysql_connect('localhost','root','') or die(mysql_error()); 
mysql_select_db('test') or die(mysql_error()); 
$query=mysql_query("select * from test limit 0,10") or die(mysql_error()); 
echo'<table border="1" ><th >Id</th><th>Date 1</th><th>Date 2</th>'; 
while($res=mysql_fetch_array($query)) 
{ 
    echo'<tr><td>'.$res['id'].'</td><td>'.$res['date1'].'</td> 
    <td>'.$res['date2'].'</td> 
    <td><a href="gen.php?id=<?php echo $row["id"]; ?> Downlaod</a></td> 
    </tr>'; 
} 
echo'</table>'; 
?> 
</body> 
</html> 

Screenshot of my view.php

+3

你需要添加一個where子句來選擇你想要的行。 –

+0

添加查詢中的條件 – lalithkumar

回答

1

您認爲網頁的view.php部分,

沒有數組名爲$row。而是$res保存您的查詢的結果集。

用這個代替:

while($res=mysql_fetch_array($query)){ 
    echo"<tr>"; 
     echo "<td>$res['id']</td><td>$res['date1']</td>"; 
     echo "<td>$res['date2']</td>"; 
     echo "<td><a href=\"gen.php?id={$res['id']}\">Download</a></td>"; 
    echo "</tr>"; 
} 

在您的PDF生成代碼,更改:

$res = mysql_query("select date1, date2 from test"); 

要:

$res = mysql_query("SELECT date1,date2 FROM test WHERE id=".intval($_GET['id'])); 

請,請,請升級mysql功能mysqli_立即。

我建議您使用prepared statement來保護您的查詢免受惡意注入。與此同時,您可以使用intval()作爲懶惰/臨時修復。

+0

你能給我一個樣本pdf生成代碼部分?我沒有得到它。謝謝。 –

+0

@NemoL對不起,我沒有時間複製你的項目。當然你會更快地測試你的代碼,因爲你已經擁有了所有的零件。 – mickmackusa

+0

當試圖查看view.php時,顯示**解析錯誤:語法錯誤,意外的'id'(T_STRING),期望','或';'**如您所說的更改代碼後。 –

相關問題