xml+php动态载入与分页
转自:动态网制作指南 www.knowsky.com
这是在看太平洋网的评论时看到的,太平洋网是用jsp做为后台语言,用来产生xml文件.然后在把数据绑定到html上的.我就用php也做了一个以下是源文件.
-----------------
xml
.
htm
------------------
<!
DOCTYPE HTML
PUBLIC
"
-//W3C//DTD HTML 4.01 Transitional//EN
"
"
http://www.w3.org/TR/html4/loose.dtd
"
>
<
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
.
pageNum
.
value
>
parseInt(pageCount
.
innerHTML))
return
false
;
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
; form
.
lastPage
.
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" ?>
"
.
"
"
;
$xmlStr
.=
"
<商铺列表>
"
.
"
"
;
$xmlStr
.=
"
<翻页工具 pageNo="
"
.
$vars
[
'
pageNo
'
]
.
"
" pageSize="
"
.
$vars
[
'
pageSize
'
]
.
"
" total="
"
.
$RecordCount
.
"
"></翻页工具>
"
.
"
"
;
$xmlStr
.=
"
<页号码>
"
.
$vars
[
'
pageNo
'
]
.
"
</页号码>
"
.
"
"
;
$xmlStr
.=
"
<页大小>
"
.
$vars
[
'
pageSize
'
]
.
"
</页大小>
"
.
"
"
;
$xmlStr
.=
"
<数量>
"
.
$RecordCount
.
"
</数量>
"
.
"
"
;
$xmlStr
.=
"
<页数量>
"
.
$PageCount
.
"
</页数量>
"
.
"
"
;
//
$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.= " "." "; $xmlStr.= " <商铺>"." "; $xmlStr.= " <名称><![CDATA[".$result['shopname']."]]></名称>"." "; $xmlStr.= " <经营人><![CDATA[".$result['shopmaster']."]]></经营人>"." "; $xmlStr.= " <级别><![CDATA[".$result['shoptype']."]]></级别>"." "; $xmlStr.= " <简介><![CDATA[".$result['shopintro']."]]></简介>"." "; $xmlStr.= " <连接地址><![CDATA[personal_shop.php?id=".$result['id']."]]></连接地址>"." "; $xmlStr.= " </商铺>"." "; }
*/
$sc
=
$vars
[
'
pageNo
'
]
*
$vars
[
'
pageSize
'
];
if
(
$sc
>
$RecordCount
)
$sc
=
$RecordCount
;
for
(
$i
=
(
$vars
[
'
pageNo
'
]
-
1
)
*
$vars
[
'
pageSize
'
];
$i
<
$sc
;
$i
++
){
$xmlStr
.=
"
"
.
"
"
;
$xmlStr
.=
"
<商铺>
"
.
"
"
;
$xmlStr
.=
"
<名称><![CDATA[这是名称:
"
.
$i
.
"
]]></名称>
"
.
"
"
;
$xmlStr
.=
"
<经营人><![CDATA[这是经营人:
"
.
$i
.
"
]]></经营人>
"
.
"
"
;
$xmlStr
.=
"
<级别><![CDATA[这是级别:
"
.
$i
.
"
]]></级别>
"
.
"
"
;
$xmlStr
.=
"
<简介><![CDATA[这是简介:
"
.
$i
.
"
]]></简介>
"
.
"
"
;
$xmlStr
.=
"
<连接地址><![CDATA[personal_shop.php?id=
"
.
$i
.
"
]]></连接地址>
"
.
"
"
;
$xmlStr
.=
"
</商铺>
"
.
"
"
; }
$xmlStr
.=
"
</商铺列表>
"
.
"
"
;
header
(
"
Content-type: text/xml
"
);
echo
$xmlStr
; } }
$shoplist
=
new
shoplist_res(
$vars
,
$HTTP_COOKIE_VARS
);
//
$shoplist->_shoplist_res();
unset
(
$sthoplist
);
?>
以上的php,注释的是我连接数据库取得的数据,既然放上来测试,也没有数据库连接,所以改了一下.偶也是刚接解xml不久,很多地方还是不很懂.见笑了......