【发布时间】:2021-04-04 17:37:17
【问题描述】:
我有以下 ajax 结构,可以显示 10、25、50 和 100 条记录
$(function() {
$(document).on('click', '.pagination li a', function(evt) {
evt.preventDefault();
url = $(this).attr('data-target');
ajaxLoad(url);
});
$('#amount_show').change(function(evt) {
evt.preventDefault();
ajaxLoad('pagination.php');
});
ajaxLoad('pagination.php');
function ajaxLoad(url) {
query_params = {
amount_show: $('#amount_show').val()
};
$('.data-pagination').html('<div class="loading">Loading...</div>');
$.ajax({
type: "GET",
url: url,
data: $.param(query_params),
success: function(data) {
$('.data-pagination').fadeOut('1000', function() { $(this).html(data) }).fadeIn('1000');
}
});
}
});
根据我从下面的 HTML 结构中选择的,ajax,它给我带来了正确发送的结果。
<select id="amount_show" name="amount_show">
<option value="10" selected>10</option>
<option value="25" >25</option>
<option value="50" >50</option>
<option value="100">100</option>
</select>
但我仍然不明白如何向寻呼机添加更多过滤器,例如客户端类型、用户类型或搜索引擎。
或者按日期搜索过滤器,我想在我的分页中添加这么多过滤器,但为此我需要一点点推动如何继续。
这是我的 PHP 代码,你能告诉我如何向寻呼机添加更多过滤器吗?
<?php
$strs = '';
$pagination_page = 'pagination.php';
$defaul_records = 10;
if (isset($_GET['page'])) {
$page = $_GET['page'] ? : '';
} else {
$page = 1;
}
if (isset($_GET['amount_show'])) {
$records_by_page = $_GET['amount_show'];
} else {
$records_by_page = $defaul_records;
}
$localization_sql = ($page - 1) * $records_by_page;
$stmtPD = $con->prepare("SELECT idCliente,
nomCliente
FROM cliente
ORDER BY idCliente DESC LIMIT $localization_sql, $records_by_page");
$stmtPD->execute();
$stmtPD->store_result();
if ($stmtPD->num_rows > 0):
ob_start();
$strs .= '<table id="data-table" class="table bootgrid-table">
<thead>
<tr>
<th>ID</th>
<th>CLIENTE</th>
<th>ACCIÓN</th>
</tr>
</thead>
<tbody>';
$stmtPD->bind_result(
$idCliente,
$nomCliente
);
while ($stmtPD->fetch()) {
$strs .= '<tr>
<td>'.$idCliente.'</td>
<td>'.$nomCliente.'</td>
<td>
<span class="view_data" id="'.$idCliente.'">Ver</span>
<span class="edit_data" id="'.$idCliente.'">Editar</span>
</td>
</tr>';
}
$stmtPD->close();
$strs .= '</tbody></table><div class="pagination"><ul class="pagination">';
$stmtPD = $con->prepare("SELECT * FROM cliente");
$stmtPD->execute();
$stmtPD->store_result();
$BD_records = $stmtPD->num_rows;
$stmtPD->close();
$con->close();
$total_page = ceil($BD_records / $records_by_page);
$prev = $page - 1;
$next = $page + 1;
if ($prev > 0) {
$strs .= "<li><a data-target='" . $pagination_page . "?page=1'><i class='icon-angle-double-arrow'></i></a></li>";
$strs .= "<li><a data-target='" . $pagination_page . "?page=$prev'><i class='icon-angle-left'></i></a></li>";
}
for ($i = 1;$i <= $total_page;$i++) {
if ($page == $i) {
$strs .= "<li><a class='page-link active' >" . $page . "</a></li>";
} else {
$strs .= "<li><a class='page-link' data-target='" . $pagination_page . "?page=$i'>$i</a></li>";
}
}
if ($page < $total_page) {
$strs .= "<li><a class='page-link' data-target='" . $pagination_page . "?page=$next'><i class='icon-angle-right'></i></a></li>";
$strs .= "<li><a class='page-link' data-target='" . $pagination_page . "?page=$total_page'><i class='icon-angle-double-right'></i></a></li>";
}
$strs .= '</ul></div>';
echo $strs;
else:
$stmtPD->close();
echo "no records..";
endif;
?>
我的表格数据示例:
idCliente nomCliente typeCliente dateCliente
1 Google VIP 2021-03-30 22:00:58.277400
2 StackOverflow PRIME 2021-03-30 21:00:58.277400
【问题讨论】:
-
如果仍然将 PHP 变量直接注入 SQL,为什么还要使用准备好的语句?
$localization_sql, $records_by_page需要参数化 -
@Dharman 那应该怎么样?因为这个变量告诉查询结果显示在 LIMIT 中,在 ajax 发送的信息之后。
-
使用占位符,然后使用
bind_param()绑定参数 -
@Dharman 我将在使用它时对其进行调查,事实是我仅在查询中使用它(在哪里和)时才实现它
-
我们看看生成的SQL。
标签: javascript php mysql ajax