Php 将此分页脚本转换为搜索分页脚本的逻辑
我只是花了一些时间编写以下教程(我将其转换为PDO而不是mysqli): 这就是它的样子:Php 将此分页脚本转换为搜索分页脚本的逻辑,php,mysql,pagination,Php,Mysql,Pagination,我只是花了一些时间编写以下教程(我将其转换为PDO而不是mysqli): 这就是它的样子: <html> <head> <title>Pagination</title> <!-- Bootstrap CDN --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.c
<html>
<head>
<title>Pagination</title>
<!-- Bootstrap CDN -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<?php
if (isset($_GET['pageno'])) {
$pageno = $_GET['pageno'];
} else {
$pageno = 1;
}
$no_of_records_per_page = 10;
$offset = ($pageno-1) * $no_of_records_per_page;
$conn=mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
die();
}
$total_pages_sql = "SELECT COUNT(*) FROM table";
$result = mysqli_query($conn,$total_pages_sql);
$total_rows = mysqli_fetch_array($result)[0];
$total_pages = ceil($total_rows / $no_of_records_per_page);
$sql = "SELECT * FROM table LIMIT $offset, $no_of_records_per_page";
$res_data = mysqli_query($conn,$sql);
while($row = mysqli_fetch_array($res_data)){
//here goes the data
}
mysqli_close($conn);
?>
<ul class="pagination">
<li><a href="?pageno=1">First</a></li>
<li class="<?php if($pageno <= 1){ echo 'disabled'; } ?>">
<a href="<?php if($pageno <= 1){ echo '#'; } else { echo "?pageno=".($pageno - 1); } ?>">Prev</a>
</li>
<li class="<?php if($pageno >= $total_pages){ echo 'disabled'; } ?>">
<a href="<?php if($pageno >= $total_pages){ echo '#'; } else { echo "?pageno=".($pageno + 1); } ?>">Next</a>
</li>
<li><a href="?pageno=<?php echo $total_pages; ?>">Last</a></li>
</ul>
</body>
</html>
标页码
例如,创建HTML表单
<form id="form" action="<?= $_SERVER['PHP_SELF'] ?>">
<input type="text" name="search" value="<?= !empty($_GET['search']) ?
htmlspecialchars($_GET['search']) : '' ?>">
<input type="submit" value="Search">
<input type="hidden" id="page" name="page" value="<?= !empty($_GET['page']) ?
intval($_GET['page']) : '' ?>">
<!-- add another fields here -->
</form>
...
<a href="" class="page">1</a>
<a href="" class="page">2</a>
要在URL中传递页面
参数,请将jQuery添加到脚本中,并将以下代码添加到页面的标题
部分:
$(document).ready(function(){
$('.page').click(function(e) {
e.preventDefault();
$('#page').val($(this).html());
$('#form').submit();
});
});
此代码阻止链接的默认操作,将页面值设置为带有#page
id的表单输入并提交它。我遇到了问题,因为当我提交表单时,然后,搜索查询覆盖了分页脚本的?pageno=
,我只在地址栏?search=
上得到搜索查询,它把一切都搞糟了。我不确定你的代码应该放在哪里。我在最初的问题中添加了脚本,所以也许你可以帮助我准确地将代码放在哪里。一些变量没有定义,分页被破坏了。我仍在努力解决这个问题,也许是一个没有jquery的解决方案?@TTnote,“只有php?在这里使用jQuery或JavaScript是一个更正确、更简单的解决方案。”。
$(document).ready(function(){
$('.page').click(function(e) {
e.preventDefault();
$('#page').val($(this).html());
$('#form').submit();
});
});