xml+php动态载入与分页
2018-09-07 10:59
这是在看太平洋网的评论时看到的,太平洋网是用jsp做为后台语言,用来产生xml文件.然后在把数据绑定到html上的.我就用php也做了一个以下是源文件.
-----------------xml.htm------------------
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN
<html>
<head>
<meta http-equiv=Content-Type content=text/html; charset=gb2312>
<title>xml</title>
</head>
<body>
<xml id=ShopList src=xml.php></xml>
<script>
function jump(form)
{
if (form.pageSize.value>parseInt(recordCount.innerHTML)) return false;
ShopList.src=xml.php?pageNo=+form.pageNum.value+&pageSize=+form.pageSize.value+&time=+(new Date()).getTime();
}
function pageCount_onpropertychange(form)
{
if (form.pageNum.value>parseInt(pageCount.innerHTML)) form.pageNum.value=parseInt(pageCount.innerHTML);
if (form.pageSize.value>parseInt(recordCount.innerHTML)) form.pageSize.value=parseInt(recordCount.innerHTML);
if(form.pageNum.value==1)
{
form.firstPage.disabled=true;
form.previousPage.disabled=true;
}
else
{
form.firstPage.disabled=false;
form.previousPage.disabled=false;
}
if(form.pageNum.value==form.pageCount.value)
{
form.nextPage.disabled=true;
}
else
{
form.nextPage.disabled=false;
form.lastPage.disabled=false;
}
}
</script>
<table width=100% height=25 border=0 cellpadding=2 cellspacing=1 id=shopTbl datasrc=#ShopList datafld=商铺>
<thead>
<tr>
<td height=25 colspan=4><span class=shop_3d_text>店铺列表</span></td>
</tr>
<tr>
<td width=30%>商铺名称</td>
<td width=20%>经营者</td>
<td width=20%>店铺级别</td>
<td width=30%>店铺简介</td>
</tr>
</thead>
<tbody>
<tr STYLE=background-color:expression(rowIndex%2==1?#EFEFEF:#FFFFFF)>
<td><a datafld=连接地址><span datafld=名称>名称</span></a></td>
<td><span datafld=经营人>经营人</span></td>
<td><span datafld=级别>级别</span></td>
<td><span datafld=简介>简介</span></td>
</tr>
</tbody>
</table>
<form return onsubmit=jump(this);return false>
<div align=right>
每页显示
<input name=pageSize datasrc=#ShopList datafld=页大小 size=2>条,
<input type=submit value= style=width:0>
共<span id=pageCount datasrc=#ShopList datafld=页数量></span>页
<span id=recordCount datasrc=#ShopList datafld=数量 ></span>条
<input name=firstPage type=submit value=首页 onclick=pageNum.value=1>
<input name=previousPage type=submit value=上页 onclick=pageNum.value=pageNum.value-1>
第<input name=pageNum datasrc=#ShopList datafld=页号码 size=2>页
<input name=nextPage type=submit value=下页 onclick=pageNum.value=(pageNum.value-0)+1>
<input name=lastPage type=submit value=尾页 onclick=pageNum.value=pageCount.value >
<input name=pageCount type=hidden datasrc=#ShopList datafld=页数量 onpropertychange=pageCount_onpropertychange(form)>
</div> </form>
</body>
</html>
-----------------xml.php------------------
<?php
//require_once Source/Global.php;
function getVars($get_vars, $post_vars) {
$i = count($get_vars);
$j = count($post_vars);
if ($i > 0 && $j > 0 ) {
while(list($key, $val) = each($get_vars)) {
$Vars[$key] = $val;
}
while(list($key2, $val2) = each($post_vars)) {
$Vars[$key2] = $val2;
}
} elseif ($i > 0) {
while(list($key, $val) = each($get_vars)) {
$Vars[$key] = $val;
}
} elseif ($j > 0) {
while(list($key2, $val2) = each($post_vars)) {
$Vars[$key2] = $val2;
}
} else {
$Vars = array();
}
return $Vars;
}
$vars = getVars($HTTP_GET_VARS, $HTTP_POST_VARS);
//class shoplist_res extends iGlobal{
class shoplist_res{
function shoplist_res($vars,$cookie){
//$this->iGlobal($vars,$cookie);
$this->outPut($vars,$cookie);
}
//function _shoplist_res(){
//$this->db->Close();
//}
function outPut($vars,$cookie){
/*$strQuery = select count(*) as rc from .$this->db_c->Db_Pre.pshop order by id desc;
$this->db->Query($strQuery);
$RecordCount = $this->db->Assoc();
$RecordCount = $RecordCount[rc];
@$this->db->freeResult();*/
$RecordCount = 25;
if (empty($vars[pageNo])) $vars[pageNo]= 1;
if (empty($vars[pageSize])) $vars[pageSize]= 10;
$PageCount = ceil($RecordCount/$vars[pageSize]);
if ($vars[pageSize]>$RecordCount) $vars[pageSize]=$RecordCount;
if ($vars[pageNo]>$PageCount) $vars[pageNo]=$PageCount;
$xmlStr.= <?xml version=\1.0\ encoding=\GBK\ ?>.\n;
$xmlStr.= <商铺列表>.\n;
$xmlStr.= \t<翻页工具 pageNo=\.$vars[pageNo].\ pageSize=\.$vars[pageSize].\ total=\.$RecordCount.\></翻页工具>.\n;
$xmlStr.= \t<页号码>.$vars[pageNo].</页号码>.\n;
$xmlStr.= \t<页大小>.$vars[pageSize].</页大小>.\n;
$xmlStr.= \t<数量>.$RecordCount.</数量>.\n;
$xmlStr.= \t<页数量>.$PageCount.</页数量>.\n;
//$strQuery = select t1.*,t2.* from .$this->db_c->Db_Pre.pshop as t1,.$this->db_c->Db_Pre.shoptype as t2 where t1.typenum=t2.typenum order by id desc
//.limit .($vars[pageNo]-1)*$vars[pageSize].,.$vars[pageSize];
//die($strQuery);
//$this->db->Query($strQuery);
/*while($result = $this->db->Assoc()){
$xmlStr.= \t.\n;
$xmlStr.= \t<商铺>.\n;
$xmlStr.= \t\t<名称><![CDATA[.$result[shopname].]]></名称>.\n;
$xmlStr.= \t\t<经营人><![CDATA[.$result[shopmaster].]]></经营人>.\n;
$xmlStr.= \t\t<级别><![CDATA[.$result[shoptype].]]></级别>.\n;
$xmlStr.= \t\t<简介><![CDATA[.$result[shopintro].]]></简介>.\n;
$xmlStr.= \t\t<连接地址><![CDATA[personal_shop.php?id=.$result[id].]]></连接地址>.\n;
$xmlStr.= \t</商铺>.\n;
}*/
$sc= $vars[pageNo]*$vars[pageSize];
if ($sc>$RecordCount) $sc = $RecordCount;
for($i=($vars[pageNo]-1)*$vars[pageSize];$i<$sc;$i++){
$xmlStr.= \t.\n;
$xmlStr.= \t<商铺>.\n;
$xmlStr.= \t\t<名称><![CDATA[这是名称:.$i.]]></名称>.\n;
$xmlStr.= \t\t<经营人><![CDATA[这是经营人:.$i.]]></经营人>.\n;
$xmlStr.= \t\t<级别><![CDATA[这是级别:.$i.]]></级别>.\n;
$xmlStr.= \t\t<简介><![CDATA[这是简介:.$i.]]></简介>.\n;
$xmlStr.= \t\t<连接地址><![CDATA[personal_shop.php?id=.$i.]]></连接地址>.\n;
$xmlStr.= \t</商铺>.\n;
}
$xmlStr.= </商铺列表>.\n;
header(Content-type: text/xml\n\n);
echo $xmlStr;
}
}
$shoplist = new shoplist_res($vars,$HTTP_COOKIE_VARS);
//$shoplist->_shoplist_res();
unset($sthoplist);
?>
以上的php,注释的是我连接数据库取得的数据,既然放上来测试,也没有数据库连接,所以改了一下.偶也是刚接解xml不久,很多地方还是不很懂.见笑了......