从 table 获取 SQL 数据作为 JSON 到 Bootstrap Table 脚本
GET SQL data from table as JSON into Bootstrap Table script
由于 Excel 和 PDF 下载等功能,我想在我的网站上实现一些脚本。我在 bootstrap-table.com 找到了解决方案 我未能检索到 table 数据,因为它们是脚本中的 json 源(数据-url) .我的 table 数据在 SQL 数据库中可用。我试图创建一个查询并创建一个 json 格式的输出,但我失败了。我正在寻求有关这一点的帮助。
这是我找到的基本代码:
<link href="https://unpkg.com/bootstrap-table@1.19.1/dist/bootstrap-table.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/tableexport.jquery.plugin@1.10.21/tableExport.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/tableexport.jquery.plugin@1.10.21/libs/jsPDF/jspdf.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/tableexport.jquery.plugin@1.10.21/libs/jsPDF-AutoTable/jspdf.plugin.autotable.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.19.1/dist/bootstrap-table.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.19.1/dist/extensions/export/bootstrap-table-export.min.js"></script>
<style>
#toolbar {
margin: 0;
}
</style>
<div id="toolbar" class="select">
<select class="form-control">
<option value="">Export Basic</option>
<option value="all">Export All</option>
<option value="selected">Export Selected</option>
</select>
</div>
<table id="table"
data-show-export="true"
data-pagination="true"
data-side-pagination="server"
data-click-to-select="true"
data-toolbar="#toolbar"
data-show-toggle="true"
data-show-columns="true"
data-url="https://examples.wenzhixin.net.cn/examples/bootstrap_table/data">
</table>
<script>
var $table = $('#table')
$(function() {
$('#toolbar').find('select').change(function () {
$table.bootstrapTable('destroy').bootstrapTable({
exportDataType: $(this).val(),
exportTypes: ['json', 'xml', 'csv', 'txt', 'sql', 'excel', 'pdf'],
columns: [
{
field: 'state',
checkbox: true,
visible: $(this).val() === 'selected'
},
{
field: 'id',
title: 'ID'
}, {
field: 'name',
title: 'Item Name'
}, {
field: 'price',
title: 'Item Price'
}
]
})
}).trigger('change')
})
</script>
我的问题如前所述,我的数据在我的 SQL 数据库中可用。所以我检索我的数据,如:
$statement = $pdo->prepare("SELECT id, vorname, rolle FROM users WHERE cid = :cid");
$result = $statement->execute(array(':cid' => $user['cid']));
$users = $statement->fetch();
我想将数据 url 从这个 data-url="https://examples.wenzhixin.net.cn/examples/bootstrap_table/data"
更改为这个 data-url="<?=json_encode($users)?>
会起作用,但我的 table.[=19 中没有显示任何数据=]
有什么想法可以通过使用我的 PDO 查询使它正常工作吗?
我相信这会解决您的问题,首先将您页面的 headers 设置为 json,这应该在页面上的任何输出之前:
header('Content-type: application/json; charset=utf-8');
然后像往常一样获取您的用户。
$statement = $pdo->prepare("SELECT id, vorname, rolle FROM users WHERE cid = :cid");
$result = $statement->execute(array(':cid' => $user['cid']));
$users = $statement->fetch();
最终回显该结果:
echo $users
总而言之,您的脚本应如下所示:
<?php
header('Content-type: application/json; charset=utf-8');
$statement = $pdo->prepare("SELECT id, vorname, rolle FROM users WHERE cid = :cid");
$result = $statement->execute(array(':cid' => $user['cid']));
$users = $statement->fetch();
echo json_encode($users);
?>
最终编辑
创建一个新的PHP文件,上面代码中的内容,我不知道你的URL是如何构建的,但你应该可以通过[=51访问这个文件=] 例如 http://yoursite.com/users/jsondata
,如果您需要传递参数来改变结果,您可以使用查询参数例如 http://yoursite.com/users/jsondata?minprice=2&maxprice=10
,并相应地改变您的数据。
当您访问此 url 时,您应该能够看到您的数据结构类似于您在此处拥有的数据:https://examples.wenzhixin.net.cn/examples/bootstrap_table/data
那么在你的 table 你可以有:
<table id="table"
...
data-url="http://yoursite.com/users/jsondata<?=($_GET['minprice'] ? '?minprice=' . $_GET['minprice'] : '').($_GET['maxprice'] ? '&maxprice=' . $_GET['maxprice'] : '')?>">
</table>
实际上,您可以做很多事情来让您的代码更加优雅,但这应该让您抢先一步。
编辑
看了你提供的例子 link 之后,我不得不想出这个。
$users = $statement->fetch();
$data = [
'total' => count($users),
'totalNotFiltered' => count($users),
'rows' => $users,
];
echo json_encode($data, JSON_FORCE_OBJECT);
我相信这应该有效。
由于 Excel 和 PDF 下载等功能,我想在我的网站上实现一些脚本。我在 bootstrap-table.com 找到了解决方案 我未能检索到 table 数据,因为它们是脚本中的 json 源(数据-url) .我的 table 数据在 SQL 数据库中可用。我试图创建一个查询并创建一个 json 格式的输出,但我失败了。我正在寻求有关这一点的帮助。
这是我找到的基本代码:
<link href="https://unpkg.com/bootstrap-table@1.19.1/dist/bootstrap-table.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/tableexport.jquery.plugin@1.10.21/tableExport.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/tableexport.jquery.plugin@1.10.21/libs/jsPDF/jspdf.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/tableexport.jquery.plugin@1.10.21/libs/jsPDF-AutoTable/jspdf.plugin.autotable.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.19.1/dist/bootstrap-table.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.19.1/dist/extensions/export/bootstrap-table-export.min.js"></script>
<style>
#toolbar {
margin: 0;
}
</style>
<div id="toolbar" class="select">
<select class="form-control">
<option value="">Export Basic</option>
<option value="all">Export All</option>
<option value="selected">Export Selected</option>
</select>
</div>
<table id="table"
data-show-export="true"
data-pagination="true"
data-side-pagination="server"
data-click-to-select="true"
data-toolbar="#toolbar"
data-show-toggle="true"
data-show-columns="true"
data-url="https://examples.wenzhixin.net.cn/examples/bootstrap_table/data">
</table>
<script>
var $table = $('#table')
$(function() {
$('#toolbar').find('select').change(function () {
$table.bootstrapTable('destroy').bootstrapTable({
exportDataType: $(this).val(),
exportTypes: ['json', 'xml', 'csv', 'txt', 'sql', 'excel', 'pdf'],
columns: [
{
field: 'state',
checkbox: true,
visible: $(this).val() === 'selected'
},
{
field: 'id',
title: 'ID'
}, {
field: 'name',
title: 'Item Name'
}, {
field: 'price',
title: 'Item Price'
}
]
})
}).trigger('change')
})
</script>
我的问题如前所述,我的数据在我的 SQL 数据库中可用。所以我检索我的数据,如:
$statement = $pdo->prepare("SELECT id, vorname, rolle FROM users WHERE cid = :cid");
$result = $statement->execute(array(':cid' => $user['cid']));
$users = $statement->fetch();
我想将数据 url 从这个 data-url="https://examples.wenzhixin.net.cn/examples/bootstrap_table/data"
更改为这个 data-url="<?=json_encode($users)?>
会起作用,但我的 table.[=19 中没有显示任何数据=]
有什么想法可以通过使用我的 PDO 查询使它正常工作吗?
我相信这会解决您的问题,首先将您页面的 headers 设置为 json,这应该在页面上的任何输出之前:
header('Content-type: application/json; charset=utf-8');
然后像往常一样获取您的用户。
$statement = $pdo->prepare("SELECT id, vorname, rolle FROM users WHERE cid = :cid");
$result = $statement->execute(array(':cid' => $user['cid']));
$users = $statement->fetch();
最终回显该结果:
echo $users
总而言之,您的脚本应如下所示:
<?php
header('Content-type: application/json; charset=utf-8');
$statement = $pdo->prepare("SELECT id, vorname, rolle FROM users WHERE cid = :cid");
$result = $statement->execute(array(':cid' => $user['cid']));
$users = $statement->fetch();
echo json_encode($users);
?>
最终编辑
创建一个新的PHP文件,上面代码中的内容,我不知道你的URL是如何构建的,但你应该可以通过[=51访问这个文件=] 例如 http://yoursite.com/users/jsondata
,如果您需要传递参数来改变结果,您可以使用查询参数例如 http://yoursite.com/users/jsondata?minprice=2&maxprice=10
,并相应地改变您的数据。
当您访问此 url 时,您应该能够看到您的数据结构类似于您在此处拥有的数据:https://examples.wenzhixin.net.cn/examples/bootstrap_table/data
那么在你的 table 你可以有:
<table id="table"
...
data-url="http://yoursite.com/users/jsondata<?=($_GET['minprice'] ? '?minprice=' . $_GET['minprice'] : '').($_GET['maxprice'] ? '&maxprice=' . $_GET['maxprice'] : '')?>">
</table>
实际上,您可以做很多事情来让您的代码更加优雅,但这应该让您抢先一步。
编辑
看了你提供的例子 link 之后,我不得不想出这个。
$users = $statement->fetch();
$data = [
'total' => count($users),
'totalNotFiltered' => count($users),
'rows' => $users,
];
echo json_encode($data, JSON_FORCE_OBJECT);
我相信这应该有效。