【发布时间】:2021-08-03 18:33:18
【问题描述】:
我正在尝试使用 mPDF、PHP 和 MySQL 将数据导出为 PDF。
例如,我想将 10 个学生的信息导出到 PDF 到一个文件中,每个学生的信息到每个页面,总共 10 页。但是我下面的代码只为每个页面生成相同的信息。
我尝试了下面的代码,但只显示了一页。
<?
$path = (getenv('MPDF_ROOT')) ? getenv('MPDF_ROOT') : __DIR__;
ob_clean();
require_once $path . '/vendor/autoload.php';
// size in mm
$mpdf = new \Mpdf\Mpdf([
'margin_left' => 25.4,
'margin_right' => 25.4,
'margin_top' => 38.1,
'margin_bottom' => 31.75,
'margin_header' => 0,
'format' => 'A4',
'orientation' => 'P',
'margin_footer' => 0
]);
$mpdf->SetTitle("info");
$mpdf->SetAuthor("Jack");
$mpdf->showWatermarkImage = true;
$mpdf->SetWatermarkText("");
$mpdf->showWatermarkText = true;
$mpdf->autoPageBreak = true;
$mpdf->watermarkTextAlpha = 0.1;
$mpdf->SetDisplayMode('fullpage');
$html = '
<html>
<head>
<style>
</style>
</head>
<body style="background: transparent url(ppp.jpg) repeat fixed right top; background-color:#ccffff; ">
';
$number = count(array_filter($_POST['eid']));
for($ii=0; $ii<$number; $ii++)
{
$query = "SELECT
`name`, `title`
FROM `p` , `x`
WHERE `p`.`id`=`x`.`id` AND `x`.`id`='".mysqli_real_escape_string($connect, $_POST["eid"][$ii])."'
GROUP BY `x`.`id` ";
$result = mysqli_query($connect, $query);
while($row = mysqli_fetch_array($result))
{
$name= $row['name'];
$title = $row['title'];
}
$html .= '
<table width="100%" border=1 ellspacing="5" style="border-collapse: collapse; ">
<tr>
<td align="left" >
Name :
</td>
<td align="center" >
'.$name.'
</td>
</tr>
<tr>
<td align="left" >
Title :
</td>
<td align="center" >
'.$title.'
</td>
</tr>
</table>
</body>
</html>
';
$mpdf->WriteHTML($html);
$fname='Report.pdf';
}
$mpdf->Output($fname, 'I');
我正在从另一个页面发送 id
<input type="hidden" value="<?PHP echo $cell['id'];?>" name="eid[]" />
我想在每个单独的页面中为唯一的学生添加姓名和职务。如果是 10 个学生,那么它应该添加一个 10 页的文件。
谁能给我一些建议,拜托。
【问题讨论】:
-
您确认
$_POST["eid"][$ii]包含唯一值吗?尝试echo查询字符串进行确认。我建议更改您的查询语句。您实际上可以使用 MySQLIN()函数执行一次。 -
感谢 NcXNaV。我已经解决了我的问题。请看我的解决方案。