javascript - 尝试将 php 表转换为 pdf 格式 - 使用 jsPDF-auto-table 将 php 查询结果(多条记录)转换为格式良好的 pdf 文件

标签 javascript php mysql pdf jspdf-autotable

我是 stackoverflow 上的“新手”,但我会定期访问它以获取提示。

我从 jsPDF 自动表插件附带的 simple.html 文件中获取了一些代码,但它似乎没有从 php 生成的表中获取数据。

我正在尝试将数据转换为一种可以转换为漂亮的 pdf 报告的格式 - “带有所有修饰” - 即;分页符、每页标题、交替行颜色等。

我尝试将数据转换为 jsPDF 自动表可以使用的形式,但我出错了,因为它只是遍历数组并保留最后的记录并以 pdf 格式打印。代码如下所示。

<button onclick="generate()">Generate pdf</button>

<script src="/js//jspdf.debug.js"></script>
<script src="/js/jspdf.plugin.autotable.js"></script>

<?php
$link = mysqli_connect('localhost','user','password','database');

if(!$link)
{
    echo 'Database Error: ' . mysqli_connect_error() ;
    exit;
}

$results=array();

$sql_staff = "SELECT staff_id, staff_firstname, staff_lastname, staff_username, staff_chargerate, staff_lastlogin FROM tblstaff ORDER BY staff_lastname ASC, staff_firstname ASC ";
        $result_staff = mysqli_query($link,$sql_staff);
        while($row = mysqli_fetch_array($result_staff)){
            $results[0] = $row['staff_id'];
            $results[1] = $row['staff_firstname'] . " " . $row['staff_lastname'];
            $results[2] = $row['staff_username'];
            $results[3] = $row['staff_chargerate'];
            $results[4] = $row['staff_lastlogin'];
            echo json_encode($results);
            $data = json_encode($results);

        }

?>

<script>
    function generate() {
        var head = [["ID", "Staff Name", "Username", "Charge-rate", "Last Log-in"]];
        var body = [
            <?echo $data;?>
        ];

        var doc = new jsPDF();
        doc.autoTable({head: head, body: body});
        doc.output("dataurlnewwindow");
    }
</script>

我认为问题在于 $data = json_encode($results); 行,但我对 PHP 或 Javascript 的了解还不够,无法确定代码需要如何更改为生成完整的 PDF 报告。有人可以帮忙吗?

最佳答案

您的问题可能与覆盖 $results 数组中的值有关,这意味着您将得到一个项目而不是一组项目。您可能想要这样的东西:

  $results = array();

  while($row = mysqli_fetch_array($result_staff)){
          $dataRow = array();
          array_push($dataRow, $row['staff_id']);
          array_push($dataRow, $row['staff_firstname'] . " " . $row['staff_lastname']);
          // etc
          array_push($results, $dataRow);
  }
  $data = json_encode($results);

关于javascript - 尝试将 php 表转换为 pdf 格式 - 使用 jsPDF-auto-table 将 php 查询结果(多条记录)转换为格式良好的 pdf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57576583/

相关文章:

javascript - 类型检查后类型上不存在属性

php - MySQL 根据不同表中的值创建表

mysql - SQL 语句错误并带有 end

mysql - 如何使用另一个计算平均值的查询的结果更新MySQL表

javascript 未运行。 Firebug 说 "reload the page to get source for: ..."

Javascript Internet Explorer 兼容性,函数未定义

javascript - 提交时更改图像源

php - 如何在 codeigniter 中使用两个不同的表只显示一次数据

php - PHP 中单引号和双引号字符串有什么区别?

c++ - 如何从 Qt 应用程序通过 ODBC 连接到 MySQL 数据库?