1.生成xml部分,文件为content.php,其中mysqlclass.inc.php为自己写的mysql简单操作类,pageclass.inc.php为自己写的分页类。<?php require_once("classes/mysqlclass.inc.php");
require_once("classes/pageclass.inc.php");
$mysql=new mysql("front","localhost","root","123");
$mysql->connect();
$mysql->query("select * from ft_products where lineid is not null");
$total=$mysql->recordcount();
if (empty($_GET["page"])) {$currpage = 1;}
else {$currpage = intval($_GET["page"]);}
$pagesize = 10;
$pageclass = new page($total,$currpage,$pagesize);
$nav = $pageclass->get_page_nav();
$descible = $pageclass->get_page_desible();
$first = $pageclass->get_page_first();
$next = $pageclass->get_page_next();
$prev = $pageclass->get_page_prev();
$last = $pageclass->get_page_last();
$recordstart = ($currpage - 1) * $pagesize;
$sql = "select lineid,itemno,catalog,name,canview,imagename,descible from ft_products where lineid is not null order by lineid desc limit $recordstart,$pagesize";
$mysql->query($sql);
$xmlstr ='<?xml version=\'1.0\' encoding=\'utf-8\'?>';
$xmlstr .= '<main>';
$xmlstr .= '<nav>';
$xmlstr .= '<descible><![CDATA[' .$descible . ']]></descible>';
$xmlstr .= '<first><![CDATA[' .$first . ']]></first>';
$xmlstr .= '<next><![CDATA[' . $next . ']]></next>';
$xmlstr .= '<prev><![CDATA[' . $prev . ']]></prev>';
$xmlstr .= '<last><![CDATA[' . $last . ']]></last>';
$xmlstr .= '</nav>';
$xmlstr .= '<content>';
$xmlstr .= '<![CDATA[';
$xmlstr .= '<table border=\'1\' width=\'100%\' cellpadding=\'0\' cellspacing=\'0\'>';
$xmlstr .= '<tr bgcolor=\'#CCCCCC\'>';
$xmlstr .= '<td>Lineid</td>';
$xmlstr .= '<td>Itemno</td>';
$xmlstr .= '<td>Name</td>';
$xmlstr .= '<td>catalog</td>';
$xmlstr .= '<td>descible</td>';
$xmlstr .= '</tr>';
while ($row = $mysql->nextrow()) {
$xmlstr .= '<tr>';
$xmlstr .= '<td>' . $row['lineid'] . '</td>';
$xmlstr .= '<td>' . $row['itemno'] . '</td>';
$xmlstr .= '<td>' . $row['name'] . '</td>';
$xmlstr .= '<td>' . $row['catalog'] . '</td>';
$xmlstr .= '<td>' . substr($row['descible'],0,50) . '</td>';
$xmlstr .= '</tr>';
}
$xmlstr .= '</table>';
$xmlstr .= ']]>';
$xmlstr .= '</content>';
$xmlstr .= '</main>';
header('content-type:text/xml;charset=utf-8');
echo($xmlstr);?>
2.分页类部分pageclass.inc.php<?php class page{
var $total; //记录总数
var $page; //第几页,如果记录数为空时$page=0这是必然的
var $pagesize; //每页显示记录数,缺省为10
var $url; //分页导航链接
var $firstp; //第一页
var $nextp; //下一页
var $prevp; //前一页
var $lastp; //最后一页
var $navop; //当前页面相关信息
function page($total,$page,$pagesize=10,$url="") {//构造函数
$this->total = $total;
$this->page = $page;
$this->pagesize = $pagesize;
$this->url = $url;
$this->firstp = "";
$this->nextp = "";
$this->prevp = "";
$this->lastp = "";
$this->navop = "";
}
function get_page_desible() {// 附加页面信息
return $this->navop;
}
function get_page_first() {//第一页
return $this->firstp;
}
function get_page_next() {//后一页
return $this->nextp;
}
function get_page_prev() {//前一页
return $this->prevp;
}
function get_page_last() {//尾页
return $this->lastp;
}
function get_page_nav() {//取得url中的查询字串
if (empty($this->url))
{$this->url=$_SERVER['REQUEST_URI'];}
$parse_url = parse_url($this->url);
$url_query = $parse_url["query"]; //得到查询部分
$currpath = $_SERVER["PHP_SELF"];
$url_query = eregi_replace("(page|&page)=$this->page","",$url_query);
$pagenum = (int) ceil($this->total / $this->pagesize); //总页数,也是最后一页数
$firstpage = 1; //第一页为1
$currpage = $this->page;
$lastpage = $pagenum ; //最后一页依总页数而定,如果总页数为0,则最后一页也为零,否则最后一面为总页数值
$prevpage = ($currpage - 1 > 0 ? $currpage - 1 : 1); //如果当前页减小于或等于0时,那取$page值,$page可能取值为0
$nextpage = ($currpage + 1 > $lastpage ? $currpage : $currpage + 1); //如果当前页加1大于总页数,则取当前页数值
$nav = "<b> $currpage </b> of <b> $pagenum </b> pages "; //总页数中的第几页
$nav .= "Show <b> $this->pagesize </b> records a page "; //每一页显示记录数
$nav .= "Total: <b> $this->total </b> records <br>"; //总共记录数
$this->navop = $nav;
if (substr($url_query,0,1)=="&") {
$nav .= "<a id='afirst' href='$currpath" . "?page=$firstpage" . $url_query . "'>First</a> |"; //首页
$nav .= "<a id='anext' href='$currpath" . "?page=$nextpage" . $url_query . "'>Next</a> |"; //下一页
$nav .= "<a id='aprev' href='$currpath" . "?page=$prevpage" . $url_query . "'>Prev</a> |"; //前一页
$nav .= "<a id='alast' href='$currpath" . "?page=$lastpage" . $url_query . "'>Last</a>"; //尾页
$this->firstp = "$currpath" . "?page=$firstpage" . $url_query;
$this->nextp = "$currpath" . "?page=$nextpage" . $url_query;
$this->prevp = "$currpath" . "?page=$prevpage" . $url_query;
$this->lastp = "$currpath" . "?page=$lastpage" . $url_query;
} else {
$nav .= "<a id='afirst' href='$currpath" . "?" . $url_query . "&page=$firstpage" . "'>First</a> |"; //首页
$nav .= "<a id='anext' href='$currpath" . "?" . $url_query . "&page=$nextpage" . "'>Next</a> |"; //下一页
$nav .= "<a id='aprev' href='$currpath" . "?" . $url_query . "&page=$prevpage" . "'>Prev</a> |"; //前一页
$nav .= "<a id='alast' href='$currpath" . "?" . $url_query . "&page=$lastpage" . "'>Last</a>"; //尾页
$this->firstp = "$currpath" . "?" . $url_query . "&page=$firstpage";
$this->nextp = "$currpath" . "?" . $url_query . "&page=$nextpage";
$this->prevp = "$currpath" . "?" . $url_query . "&page=$prevpage";
$this->lastp = "$currpath" . "?" . $url_query . "&page=$lastpage";
}
return $nav;
}
}?>
3.前台页台调用程序pagebyajax.html<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script language="javascript" type="text/javascript">
//begin initajax()
function Initajax()
{
var ajax=false;
try {
ajax = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
ajax = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
ajax = false;
}
}
if (!ajax && typeof(XMLHttpRequest)!='undefined') {
ajax = new XMLHttpRequest();
if (ajax.overrideMimeType) {
ajax.overrideMimeType("text/xml");
}
}
return ajax;
} //end initajax()
//create document
function createdocument(handle,xmlstr) {
if(document.implementation&&document.implementation.createDocument) {
var xmldoc = document.implementation.createDocument("", "", null);
/*
xmldoc.prototype.loadXML = function(xmlstr) {
alert(childNodes.length);
var childNodes = this.childNodes;
for (var i = childNodes.length - 1; i >= 0; i--)
{this.removeChild(childNodes[i]);}
var dp = new DOMParser();
var newDOM = dp.parseFromString(xmlstr, "text/xml");
var newElt = this.importNode(newDOM.documentElement, true);
this.appendChild(newElt);
}
xmldoc.loadXML(xmlstr); //Firefox下不支持loadXML方法
*/
}
else if(window.ActiveXObject) {
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
xmldoc.onreadystatechange = function() {
if(xmldoc.readyState == 4) {
handle(xmldoc, xmlstr);
}
}
xmldoc.loadXML(xmlstr);
}
}
//begin setcontent()
function setcontent(xmldoc) {
document.getElementById("divdescible").innerHTML = xmldoc.getElementsByTagName("descible")[0].firstChild.data;
var btnfirst = document.getElementById("btnfirst");
btnfirst.onclick = function() {
send_request(xmldoc.getElementsByTagName("first")[0].firstChild.data);
}
var btnnext = document.getElementById("btnnext");
btnnext.onclick = function() {
send_request(xmldoc.getElementsByTagName("next")[0].firstChild.data);
}
var btnprev = document.getElementById("btnprev");
btnprev.onclick = function() {
send_request(xmldoc.getElementsByTagName("prev")[0].firstChild.data);
}
var btnlast = document.getElementById("btnlast");
btnlast.onclick = function() {
send_request(xmldoc.getElementsByTagName("last")[0].firstChild.data);
}
document.getElementById("content").innerHTML = xmldoc.getElementsByTagName("content")[0].firstChild.data;
}//end setcontent()
//begin send_request()
function send_request(url) {
var request = new Initajax();
if (!request) {
window.alert("不能创建XMLHttpRequest对象实例");
return false;
}
request.open("GET",url,true);
request.onreadystatechange = function() {
if (request.readyState==4 ) {
if (request.status==200) {
var xmldom = request.responseXML.documentElement;
setcontent(xmldom);
} else {
alert("您请求的页面有异常");
}
}
}
request.send(null);
} //end send_request
</script>
</head>
<body onload="send_request('content.php');">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td height="24" bgcolor="#99CCFF" align="center">
<div id="nav">
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="4"><div id="divdescible"></div></td></tr>
<tr>
<td width="25"><input type="button" id="btnfirst" value="First"></td>
<td width="25"><input type="button" id="btnnext" value="Next"></td>
<td width="25"><input type="button" id="btnprev" value="Prev"></td>
<td width="25"><input type="button" id="btnlast" value="Last"></td>
</tr>
</table>
</div>
</td>
</tr>
<tr>
<td><div id="content">请稍候,正在装载数据....</div></td>
</tr>
</table>
</body>
</html>
运行画面如下: