• ajax实现分页


    使用ajax分页原理:
    第一步:做一个表格
    第二步:封装两个方法。
    第三步:新建个负责显示页面。
    第四步:做一个纯PHP处理页面处理要显示页的所有数据

    首先使用一张数据比较多的数据库中的表格:

    首页面加载后首先导入所有数据,并显示前20条数据。

    <!doctype html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8" />
    	<title>Document</title>
    	<script src="jquery-1.11.2.min.js"></script>
    </head>
    <body>
    <div>
    	<input type="text" id="key" />
    	<input type="button" value="查询" id="chaxun" />
    </div>
    <table width="100%" border="1" bordercolordark="0" bordercolorlight="0">
    	<tr>
    		<td>代号</td>
    		<td>名称</td>
    		<td>父级代号</td>
    	</tr>
    	<tbody id="neirong"><!--显示内容-->
    			
    	</tbody>
    </table>
    <div id="xinxi">
    		
    </div>
    </body>
    <script type="text/javascript">
    
    	var page = 1;//定个变量,当前要显示的页
    	
    	Load();//加载数据
    	
    	function Load()
    	{
    		var key = $("#key").val();//查询条件。用户输入的内容
    		$.ajax({
    			url:"chuli.php",
    			data: {
                page: page,
                key: key
            },//传2个参数一当前页2关键字也就是查询条件
    			type:"POST",
    			dataType:"JSON",
    			success: function(data){//匿名函数
    					var str = "";//这个将来要放表格显示的
    					for(var k in data)//通过K可以获得每一条数据
    					{//加载数据完成
    						str +="<tr><td>"+data[k].AreaCode+"</td><td>"+data[k].AreaName+"</td><td>"+data[k].ParentAreaCode+"</td></tr>";//要显示的内容,代号、名称父级代号
    					}
    					$("#neirong").html(str);
    			}
    		});
    	}
    	
    	
    </script>
    </html>
    

     chuli.php文件:

    这里引入了一个php的类文件:

    DBDA.class.php

    <?php
    class DBDA//类名
    {	//下面是成员 变量
    	public $host= "localhost";//服务器,本机地址
    	public $uid = "root";//用户名
    	public $pwd = "511108";//用户密码
    	public $dbname = "text";//数据库名称
    		
    
    //通过上面的变量来访问数据库。在访问数据库的时候就可以直接造对象
    //成员方法。执行SQL语句的方法
    public function Query($sql,$type=1)
    {
    	$db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
    	
    	$r = $db->query($sql);//判断是不是查询是查询就返回一个二维数组
    
    	if($type==1)//如果type等于1属于查询语句,如果查询语句就要返回一个二维数组
    	{
    		return $r->fetch_all();//从结果集读取所有数据。因为是二维数组所以就直接return返回
    	}
    	else
    	{
    		return $r;//如果不是查询,其他语句就直接return $r
    	}
    }
    
    
    
    
    //返回字符串的方法
    	public function StrQuery($sql,$type=1)
    	{
    		$db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
    		$r = $db->query($sql);
    		
    		if($type==1)
    		{
    			$attr = $r->fetch_all();
    			$str = "";
    			foreach($attr as $v)
    			{
    				$str .= implode("^",$v)."|";
    			}
    			
    			return substr($str,0,strlen($str)-1);
    
    		}
    		else
    		{
    			return $r;
    		}
    	}
    
    
    //返回JSON
    	function JSONQuery($sql,$type=1)
    	{
    		$db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
    		$r = $db->query($sql);
    		
    		if($type==1)
    		{
    		    return json_encode($r->fetch_all(MYSQLI_ASSOC));
    		}
    		else
    		{
    			return $r;
    		}
    	}
    }
    

      chuli.php:处理

    <?php
    
    include("DBDA.class.php");
    $db = new DBDA();
    
    //把上个页面的2个值传过来
    $page = $_POST["page"];//当前页
    $key = $_POST["key"];//条件,关键字
    $num = 20;//定义,一页里多少条数据,
    $tiaoshu = ($page-1)*$num;//$tiaoshu跳过多少条($page-1)*$num现在$num是20条
    //写$SQL语句
    $sql = "select * from chinastates where areaname like '%{$key}%' limit {$tiaoshu},{$num}";//根据关键字查like '%{$tiaojian}%'。
    echo $db->JSONQuery($sql);
    

     

    首页里的分页处理:fenye.php

    <?php
    include("DBDA.class.php");
    $db = new DBDA();

    $key = $_POST["key"];
    $num = 20;

    $sql = "select count(*) from chinastates where areaname like '%{$key}%'";

    $zts = $db->StrQuery($sql);

    echo ceil($zts/$num);

    <!doctype html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8" />
    	<title>Document</title>
    	
    	<script src="jquery-1.11.2.min.js"></script>
    <style type="text/css">
    .dangqian{ background-color:#69F}
    </style>
    </head>
    <body>
    <div>
    	<input type="text" id="key" />
    	<input type="button" value="查询" id="chaxun" />
    </div>
    <table width="50%" border="1" bordercolordark="0" bordercolorlight="0">
    	<tr>
    		<td>代号</td>
    		<td>名称</td>
    		<td>父级代号</td>
    	</tr>
    	<tbody id="neirong"><!--显示内容-->
    			
    	</tbody>
    </table>
    <div id="fenyexinxi">
    		
    </div>
    </body>
    <script type="text/javascript">
    
    	var page = 1;//定个变量,当前要显示的页
    	
    	Load();//加载数据
    	Loadfenyexinxi();//加载分页信息
    	//查询
    	$("#chaxun").click(function(){
    		page = 1;
    		Load();//加载数据
    		Loadfenyexinxi();//加载分页信息
    	})
    	function Load()
    	{
    		var key = $("#key").val();//查询条件。用户输入的内容
    		$.ajax({
    			url:"chuli.php",
    			data: {
                page: page,
                key: key
            },//传2个参数一当前页2关键字也就是查询条件
    			type:"POST",
    			dataType:"JSON",
    			success: function(data){//匿名函数
    					var str = "";//这个将来要放表格显示的
    					for(var k in data)//通过K可以获得每一条数据
    					{//加载数据完成
    						str +="<tr><td>"+data[k].AreaCode+"</td><td>"+data[k].AreaName+"</td><td>"+data[k].ParentAreaCode+"</td></tr>";//要显示的内容,代号、名称父级代号
    					}
    					$("#neirong").html(str);
    			}
    		});
    	}
    function Loadfenyexinxi()//分页信息
    {
    	var str = "";
    	var minys = 1;//最小页数
    	var maxys = 1;//最大页数
    	var key = $("#key").val();//取关键字用于传到zys页面用
    	
    	//查总页数
    	$.ajax({
    		async:false,//同步的
    		type:"POST",
    		url:"fenye.php",
    		data:{key:key},
    		dataType:"TEXT",
    		success:function(d){
    				maxys = d;
    		}
    	});
    	str += "<span>总共:"+maxys+"页</span>  ";
    	str += "<span id='prev'>上一页</span>";
    	//循环做列表,当前页减1,当前页加3
    	for(var i=page-2;i<page+3;i++)
    	{
    		if(i>=minys && i<=maxys)
    		{
    			if(i==page)
    			{
    				str += "<span class='dangqian' bs='"+i+"'>"+i+"</span>  ";
    			}
    			else
    			{
    				str += "<span class='list' bs='"+i+"'>"+i+"</span>  ";
    			}
    		
    		}
    	}
    	
    	str += "<span id='next'>下一页</span>";
    	$("#fenyexinxi").html(str);
    	//给上一页添加点击事件
    	$("#prev").click(function(){
    			page = page-1;
    			if(page<1)
    			{
    				page=1;
    			}
    			Load();//加载数据
    			Loadfenyexinxi();//加载分页信息
    		})
    	//给下一页加点击事件
    	$("#next").click(function(){
    			page = page+1;
    			if(page>maxys)
    			{
    				page=maxys;
    			}
    			Load();//加载数据
    			Loadfenyexinxi();//加载分页信息
    		})
    	//给中间的列表加事件
    	$(".list").click(function(){
    			page = parseInt($(this).attr("bs"));//字符串变整数parseInt
    			Load();//加载数据
    			Loadfenyexinxi();//加载分页信息
    		})
    
    }
    	
    </script>
    </html>
    

     

  • 相关阅读:
    PHP的MySQL扩展:PHP访问MySQL的常用扩展函数
    PHP的MySQL扩展:MySQL数据库概述
    JQuery笔记:JQuery和JavaScript的联系与区别
    《千与千寻》给读者带来了什么?
    Canvas入门(3):图像处理和绘制文字
    Canvas入门(2):图形渐变和图像形变换
    Canvas入门(1):绘制矩形、圆、直线、曲线等基本图形
    python第三十二天----6.3作业中…………
    python第三十一天-----类的封装、继承,多态.....
    python第三十天-类
  • 原文地址:https://www.cnblogs.com/aqxss/p/6274585.html
Copyright © 2020-2023  润新知