php学习笔记(三十二)ajax结合pageView类实现页面无刷新请求
2013-01-06 13:58
633 查看
<html> <head> <title>Ajax无刷新</title> <script type="text/javascript" src="ajax.js"></script> </head> <body> <div id="fpage">数据加载中……</div> <hr> <script type="text/javascript"> var cache=new Array(); function setPage(url){ var obj = document.getElementById("fpage"); if('undefined'==typeof(cache[url])){ var ajax = Ajax(); ajax.get(url,function(data){ obj.innerHTML=data; cache[url]=data; }); }else{ obj.innerHTML=cache[url]; } } setPage("demo.php?page=1"); </script> <script type="text/javascript"> document.write(new Date()+"<br>"); </script> </body> </html>
demo.php
<?php header("Content-Type:text/html;charset=utf-8"); require 'page.class.php'; $mysqli = new mysqli("localhost","root","root","hibernate"); $result = $mysqli->query("select id from users"); $page = new Page($result->num_rows,10); $sql = "select id,name from users order by id {$page->limit}"; $result = $mysqli->query($sql); echo '<table align="center" border="1" width=400>'; echo '<tr><th>id</th><th>name</th></tr>'; while ($row = $result->fetch_assoc()){ echo "<tr>"; foreach ($row as $col){ echo "<td>".$col."</td>"; } echo "</tr>"; } echo '<tr><td align="right" colspan="2">'.$page->fpage().'</td></tr>'; echo '</table>'; ?>
page.class.php
<?php class Page { private $total; //数据表中总记录数 private $listRows; //每页显示行数 private $limit; private $uri; private $pageNum; //页数 private $config=array('header'=>"records", "prev"=>"prev", "next"=>"next", "first"=>"first", "last"=>"last"); private $listNum=8; /* * $total * $listRows */ public function __construct($total, $listRows=10, $pa=""){ $this->total=$total; $this->listRows=$listRows; $this->uri=$this->getUri($pa); $this->page=!empty($_GET["page"]) ? $_GET["page"] : 1; $this->pageNum=ceil($this->total/$this->listRows); $this->limit=$this->setLimit(); } private function setLimit(){ return "Limit ".($this->page-1)*$this->listRows.", {$this->listRows}"; } private function getUri($pa){ $url=$_SERVER["REQUEST_URI"].(strpos($_SERVER["REQUEST_URI"], '?')?'':"?").$pa; $parse=parse_url($url); if(isset($parse["query"])){ parse_str($parse['query'],$params); unset($params["page"]); $url=$parse['path'].'?'.http_build_query($params); } return $url; } function __get($args){ if($args=="limit") return $this->limit; else return null; } private function start(){ if($this->total==0) return 0; else return ($this->page-1)*$this->listRows+1; } private function end(){ return min($this->page*$this->listRows,$this->total); } private function first(){ if($this->page==1) @$html.=''; else @$html.=" <a href='javascript:setPage(\"{$this->uri}&page=1\")'>{$this->config["first"]}</a> "; return $html; } private function prev(){ if($this->page==1) @$html.=''; else @$html.=" <a href='javascript:setPage(\"{$this->uri}&page=".($this->page-1)."\")'>{$this->config["prev"]}</a> "; return $html; } private function pageList(){ $linkPage=""; $inum=floor($this->listNum/2); for($i=$inum; $i>=1; $i--){ $page=$this->page-$i; if($page<1) continue; $linkPage.=" <a href='javascript:setPage(\"{$this->uri}&page={$page}\")'>{$page}</a> "; } $linkPage.=" {$this->page} "; for($i=1; $i<=$inum; $i++){ $page=$this->page+$i; if($page<=$this->pageNum) $linkPage.=" <a href='javascript:setPage(\"{$this->uri}&page={$page}\")'>{$page}</a> "; else break; } return $linkPage; } private function next(){ if($this->page==$this->pageNum) @$html.=''; else @$html.=" <a href='javascript:setPage(\"{$this->uri}&page=".($this->page+1)."\")'>{$this->config["next"]}</a> "; return $html; } private function last(){ if($this->page==$this->pageNum) @$html.=''; else @$html.=" <a href='javascript:setPage(\"{$this->uri}&page=".($this->pageNum)."\")'>{$this->config["last"]}</a> "; return $html; } private function goPage(){ return ' <input type="text" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>'.$this->pageNum.')?'.$this->pageNum.':this.value;setPage(\''.$this->uri.'&page=\'+page+\'\')}" value="'.$this->page.'" style="width:25px"><input type="button" value="GO" onclick="javascript:var page=(this.previousSibling.value>'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;setPage(\''.$this->uri.'&page=\'+page+\'\')"> '; } function fpage($display=array(0,1,2,3,4,5,6,7,8)){ $html[0]=" total:<b>{$this->total}</b>{$this->config["header"]} "; $html[1]=" pageSize:<b>".($this->end()-$this->start()+1)."</b>,currentSize:<b>{$this->start()}-{$this->end()}</b> "; $html[2]=" <b>{$this->page}/{$this->pageNum}</b> "; $html[3]=$this->first(); $html[4]=$this->prev(); $html[5]=$this->pageList(); $html[6]=$this->next(); $html[7]=$this->last(); $html[8]=$this->goPage(); $fpage=''; foreach($display as $index){ $fpage.=$html[$index]; } return $fpage; } }
相关文章推荐
- jquery学习笔记-jquery结合showModalDialog实现子页面局部刷新父页面
- php学习笔记(三十)ajax请求和接收参数的实现方式(包括json数据格式的简单处理)
- (PHP学习笔记)实现页面静态化
- 学习笔记之php页面ajax登录异步刷新
- PHP学习笔记 用超链接实现在本页面显示不同信息
- PHP学习笔记(6) PHP静态化页面的实现思路
- 【学习笔记】PHP实现页面静态化
- Ajax学习笔记---3种Ajax的实现方法【推荐】
- 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回
- PHP学习笔记三十二【Exception】
- PHP + JavaScript + Ajax 实现无刷新页面加载效果
- asp.net实现页面的一般处理程序(CGI)学习笔记
- 20171207学习笔记之layer实现删除确认及操作完成后弹出提醒,然后刷新本页面
- iOS学习笔记之g高效实现圆角的方式---防止页面卡顿
- php学习笔记(三十三)php自定义模板引擎的实现
- 使用Python的Django框架结合jQuery实现AJAX购物车页面
- Vue学习笔记(1)——在页面右上角实现可悬浮/隐藏的系统菜单
- php页面静态化技术;学习笔记
- PHP学习笔记 登录页面
- jQuery学习笔记之控制页面实现代码