Php 搜索查询&;获取搜索结果而不刷新(分页)
欢迎每一个人,感谢所有的服务 我已经把代码用于 而且效果很好, 我的问题是如何进行分页,因为有些时候结果很长 我需要同一个例子的答案Php 搜索查询&;获取搜索结果而不刷新(分页),php,ajax,Php,Ajax,欢迎每一个人,感谢所有的服务 我已经把代码用于 而且效果很好, 我的问题是如何进行分页,因为有些时候结果很长 我需要同一个例子的答案 谢谢。这有点复杂,因为你想知道你在哪一页,还有多少页 我将从返回结果的服务器端脚本开始。在此示例中,客户端将发送以下参数: $_POST['value'] = The search input $_POST['page'] = What page to get $_POST['length'] = How many items per page 下面是脚本的示例
谢谢。这有点复杂,因为你想知道你在哪一页,还有多少页 我将从返回结果的服务器端脚本开始。在此示例中,客户端将发送以下参数:
$_POST['value'] = The search input
$_POST['page'] = What page to get
$_POST['length'] = How many items per page
下面是脚本的示例:
<?php
define("HOST", "localhost");
// Database user
define("DBUSER", "username");
// Database password
define("PASS", "password");
// Database name
define("DB", "database_name");
############## Make the mysql connection ###########
$conn = mysql_connect(HOST, DBUSER, PASS) or die('Could not connect !<br />Please contact the site\'s administrator.');
$db = mysql_select_db(DB) or die('Could not connect to database !<br />Please contact the site\'s administrator.');
$value = $_GET['value'];
$page = $_GET['page'] - 1;
$length = $_GET['length'];
if(!$page || $page < 0) $page = 0;
if(!$length || $length < 0) $length = 10;
$start = $page * $length;
$query = mysql_query("SELECT * FROM persons WHERE age LIKE '%".$value."%' LIMIT ".$start.", ".$length.";") or die('error ' . mysql_error());
$items = array();
while($data = mysql_fetch_array($query)) {
$items[] = $data;
}
$result = array(
'items' => $items,
'page' => $page,
'length' => count($items)
);
echo json_encode($result);
?>
另存为search.php。
以下是html:
<html>
<head>
<title>Search</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
page = 1;
$('#search').click(function() {
search();
});
$('#prev').click(function() {
if(page > 1) page--;
search();
});
$('#next').click(function() {
page++;
search();
});
function search() {
$.getJSON('search.php', {
value: $('#value').val(),
page: page
}, function(data) {
var result = '';
$.each(data['items'], function(i, item) {
result += '<tr><td>' + item['name'] + '</td></tr>';
});
$('#results').html('<table>' + result + '</table>' + data['length'] + ' results');
});
return false;
}
});
</script>
</head>
<body>
<form id="lets_search" method="post">
<input type="text" id="value" />
<input type="button" id="search" value="Search" />
</form>
<div id="results"></div>
<a id="prev" href="#">Previous</a>
<a id="next" href="#">Next</a>
</body>
</html>
搜寻
$(文档).ready(函数(){
page=1;
$(“#搜索”)。单击(函数(){
搜索();
});
$('#prev')。单击(函数(){
如果(页面>1)页面--;
搜索();
});
$(“#下一步”)。单击(函数(){
page++;
搜索();
});
函数搜索(){
$.getJSON('search.php'{
值:$('#value').val(),
第页:第页
},函数(数据){
var结果=“”;
$。每个(数据['items',函数(i,item){
结果+=''+项['name']+'';
});
$('#results').html(''+result+''+data['length']+'results');
});
返回false;
}
});
或者,您可以添加“length”参数来控制页面长度
请注意,此脚本仅用于演示目的,至少应改进以下内容:
- 筛选输入值以防止sql 注射
- 仅显示“上一个”和“下一个” 当存在上一个或下一个 下一页