ajax+php实现无刷新分页代码实例
index.php代码如下:
header("content-type: text/html; charset=utf-8");
error_reporting(e_all^e_notice);
include('pagination_class.php');
mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('mydemo');
mysql_query("set names 'utf8'");
?>
<script language="javascript" src="pagination.js"></script>
<link rel="stylesheet" type="text/css" href="style.css" />
<?
$qry = "select * from students";
$searchtext = "";
if($_request['search_text']!=""){
$searchtext = $_request['search_text'];
$qry .=" where name like '$searchtext%'";
}
//for pagination
$starting=0;
$recpage = 2;//number of records per page
$obj = new pagination_class($qry,$starting,$recpage);
$result = $obj->result;
?><form name="form1" action="testpage.php" method="post">
<table border="1" align="center" width="40%">
<tr>
<td colspan="2">
search <input type="text" name="search_text" id="search_text" value="<?php echo $searchtext; ?>">
<input type="submit" value="search">
</td>
</tr>
<tr><td colspan="2">
<div id="page_contents">
<table border="1" align="center" width="100%">
<tr><td>sl no</td><td>name</td></tr>
<?if(mysql_num_rows($result)!=0){
$counter = $starting + 1;
while($data = mysql_fetch_array($result)) {?>
<tr>
<td><? echo $counter; ?></td>
<td><? echo $data['name']; ?></td>
</tr><?
$counter ++;
} ?>
<tr><td colspan="2"><? echo $obj->anchors; ?></td></tr>
<tr><td colspan="2"><? echo $obj->total; ?></td></tr>
<?}else{?>//开源代码www.bcty365.com
<tr><td align="center" colspan="2">no data found</td></tr>
<?}?>
</td></tr>
</table>
</div>
</td></tr>
</table></form>
pagination.js文件,代码如下:
function $()
{
var elements = new array();
for (var i = 0; i < arguments.length; i++)
{
var element = arguments[i];
if (typeof element == 'string')
element = document.getelementbyid(element);
if (arguments.length == 1)
return element;
elements.push(element);
}
return elements;
}
var xmlhttp
function pagination(page)
{
xmlhttp=getxmlhttpobject();
if (xmlhttp==null)
{
alert ("your browser does not support ajax!");
return;
}
var url="test_sub.php";
url = url+"?starting="+page;
url = url+"&search_text="+$('search_text').value;
url=url+"&sid="+math.random();
xmlhttp.onreadystatechange=statechanged;
xmlhttp.open("get",url,true);
xmlhttp.send(null);
}
function statechanged()
{
if (xmlhttp.readystate==4)
{
$("page_contents").innerhtml=xmlhttp.responsetext;
}
}
function getxmlhttpobject()
{
var xmlhttp=null;
try
{
// firefox, opera 8.0+, safari
xmlhttp=new xmlhttprequest();
}
catch (e)
{
// internet explorer
try
{
xmlhttp=new activexobject("msxml2.xmlhttp");
}
catch (e)
{
xmlhttp=new activexobject("microsoft.xmlhttp");
}
}
return xmlhttp;
}
pagination_class.php,代码如下:
<?php
/*
you can use it with out any worries...it is free for you..it will display the out put like:
first | previous | 3 | 4 | 5 | 6 | 7| 8 | 9 | 10 | next | last
page : 7 of 10 . total records found: 20
*/
class pagination_class{
var $result;
var $anchors;
var $total;
function pagination_class($qry,$starting,$recpage)
{
$rst = mysql_query($qry) or die(mysql_error());
$numrows = mysql_num_rows($rst);
$qry .= " limit $starting, $recpage";
$this->result = mysql_query($qry) or die(mysql_error());
$next = $starting+$recpage;
$var = ((intval($numrows/$recpage))-1)*$recpage;
$page_showing = intval($starting/$recpage)+1;
$total_page = ceil($numrows/$recpage);
if($numrows % $recpage != 0){
$last = ((intval($numrows/$recpage)))*$recpage;
}else{
$last = ((intval($numrows/$recpage))-1)*$recpage;
}
$previous = $starting-$recpage;
$anc = "<ul id='pagination-flickr'>";
if($previous < 0){
$anc .= "<li class='previous-off'>first</li>";
$anc .= "<li class='previous-off'>previous</li>";
}else{
$anc .= "<li class='next'><a href='网页特效:pagination(0);'>first </a></li>";
$anc .= "<li class='next'><a href='javascript:pagination($previous);'>previous </a></li>";
}
################if you dont want the numbers just comment this block###############
$norepeat = 4;//no of pages showing in the left and right side of the current page in the anchors
$j = 1;
$anch = "";
for($i=$page_showing; $i>1; $i--){
$fpreviouspage = $i-1;
$page = ceil($fpreviouspage*$recpage)-$recpage;
$anch = "<li><a href='javascript:pagination($page);'>$fpreviouspage </a></li>".$anch;
if($j == $norepeat) break;
$j++;
}
$anc .= $anch;
$anc .= "<li class='active'>".$page_showing."</li>";
$j = 1;
for($i=$page_showing; $i<$total_page; $i++){
$fnextpage = $i+1;
$page = ceil($fnextpage*$recpage)-$recpage;
$anc .= "<li><a href='javascript:pagination($page);'>$fnextpage</a></li>";
if($j==$norepeat) break;
$j++;
}
############################################################
if($next >= $numrows){
$anc .= "<li class='previous-off'>next</li>";
$anc .= "<li class='previous-off'>last</li>";
}else{
$anc .= "<li class='next'><a href='javascript:pagination($next);'>next </a></li>";
$anc .= "<li class='next'><a href='javascript:pagination($last);'>last</a></li>";
}
$anc .= "</ul>";
$this->anchors = $anc;
$this->total = "page : $page_showing <i> of </i>
$total_page . total records found: $numrows";
}
}
?>
数据库代码如下:
-- phpmyadmin sql dump
-- version 3.2.4
-- //开源代码www.bcty365.com
--
-- 主机: localhost
-- 生成日期: 2010 年 07 月 07 日 09:26
-- 服务器版本: 5.1.41
-- php 版本: 5.3.1
set sql_mode="no_auto_value_on_zero";
--
-- 数据库: `mydemo`
--
-- --------------------------------------------------------
--
-- 表的结构 `students`
--
create table if not exists `students` (
`id` int(11) not null auto_increment,
`name` varchar(50) not null default '',
primary key (`id`)
) engine=myisam default charset=utf8 auto_increment=21 ;
--
-- 转存表中的数据 `students`//开源代码www.bcty365.com
--
insert into `students` (`id`, `name`) values
(1, '小明'),
(2, 'aniesh'),
(3, 'babu'),
(4, '小黄'),
(5, 'praveesh'),
(6, 'dixon'),
(7, 'sanju'),
(8, 'neeraj'),
(9, 'siju'),
(10, 'noble'),
(11, 'bibin'),
(12, 'febin'),
(13, 'binu'),
(14, 'charles'),
(15, 'jaggu'),
(16, 'mani'),
(17, 'milu'),
(18, 'aravind'),
(19, 'jay'),
(20, 'hari');
热文精选
更多资讯推荐
更多- Stable Diffusion 2.0 发布,加强成人内容过滤
- .NET 7 正式发布
- A3Mall 开源商城系统 v2.1 发布
- FydeOS v14 版本更新:优化输入法体验+重构安卓子系统+全新应用启动器
- ThinkPHP V6.0.8版本发布——多环境变量配置支持
- 毕昇 JDK 8u292、11.0.11 发布!
- KubeVela 1.0:开启可编程式应用平台的未来
- Eclipse 4.19 稳定版发布
- 阿里巴巴 Arthas 3.5.0 版本发布,支持反编译打印行号和统一鉴权
- Debian 11 Bullseye 即将进入冻结,Debian 13 代号 Trixie
- Rancher 2.5 发布,新增支持边缘集群的 GitOps
- FlashDB IoT 超轻量级嵌入式数据库