免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1261 | 回复: 0
打印 上一主题 下一主题

php+ajax+xml+mysql实现分页举例 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-23 19:30 |只看该作者 |倒序浏览

                1.生成xml部分,文件为content.php,其中mysqlclass.inc.php为自己写的mysql简单操作类,pageclass.inc.php为自己写的分页类。
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    ='';
$xmlstr    .= '';
$xmlstr    .=    '';
$xmlstr    .=        '';
$xmlstr    .=        '';
$xmlstr    .=        '';
$xmlstr    .=        '';
$xmlstr    .=        '';
$xmlstr    .=    '';
$xmlstr    .=    '';
$xmlstr    .=        '';
$xmlstr    .=            '';
$xmlstr    .=            'Lineid';
$xmlstr    .=            'Itemno';
$xmlstr    .=            'Name';
$xmlstr    .=            'catalog';
$xmlstr    .=            'descible';
$xmlstr    .=            '';
while ($row    = $mysql->nextrow()) {
$xmlstr .=        '';
$xmlstr .=            '' . $row['lineid']    . '';
$xmlstr .=            '' . $row['itemno']    . '';
$xmlstr .=            '' . $row['name'] .    '';
$xmlstr .=            '' . $row['catalog'] . '';
$xmlstr .=            '' . substr($row['descible'],0,50) . '';
$xmlstr .=            '';
}
$xmlstr    .=        '';
$xmlstr    .=        ']]>';
$xmlstr    .=    '';
$xmlstr    .= '';
header('content-type:text/xml;charset=utf-8');
echo($xmlstr);?>
2.分页类部分pageclass.inc.php
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   = " $currpage  of  $pagenum  pages ";                     //总页数中的第几页
      $nav  .= "Show  $this->pagesize  records a page ";                      //每一页显示记录数  
      $nav  .= "Total:  $this->total  records
";                            //总共记录数
      $this->navop = $nav;
      if (substr($url_query,0,1)=="&") {
       $nav  .= "First |";      //首页
       $nav  .= "Next |";      //下一页
       $nav  .= "Prev |";      //前一页
       $nav  .= "Last";          //尾页
       $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  .= "First |";    //首页
       $nav  .= "Next |";          //下一页
       $nav  .= "Prev |";          //前一页
       $nav  .= "Last";          //尾页
       $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
无标题文档
//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);}
              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

   
        
           
            
            
               
               
               
               
            
           
        
   


    请稍候,正在装载数据....

运行画面如下:


               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/23633/showart_205399.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP