第二个灵魂 发表于 2015-2-4 00:28:19

PHP教程之xml+php静态载入与分页

学会了生成静态网页,现在你应该接触一下XML了,恩,XML也了解了,那么AJAX你也得接触接触吧?AJAX完了....然后...xml|静态|分页   这是在看宁靖洋网的评论时看到的,宁靖洋网是用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.= " <称号><!."]]></称号>"." ";
$xmlStr.= " <运营人><!."]]></运营人>"." ";
$xmlStr.= " <级别><!."]]></级别>"." ";
$xmlStr.= " <简介><!."]]></简介>"." ";
$xmlStr.= " <毗连地址><!."]]></毗连地址>"." ";
$xmlStr.= " </商铺>"." ";
}*/
$sc= $vars['pageNo']*$vars['pageSize'];
if ($sc>$RecordCount) $sc = $RecordCount;
for($i=($vars['pageNo']-1)*$vars['pageSize'];$i<$sc;$i++){
$xmlStr.= " "." ";
$xmlStr.= " <商铺>"." ";
$xmlStr.= " <称号><!]></称号>"." ";
$xmlStr.= " <运营人><!]></运营人>"." ";
$xmlStr.= " <级别><!]></级别>"." ";
$xmlStr.= " <简介><!]></简介>"." ";
$xmlStr.= " <毗连地址><!]></毗连地址>"." ";
$xmlStr.= " </商铺>"." ";
}
$xmlStr.= "</商铺列表>"." ";
header("Content-type: text/xml ");
echo $xmlStr;
}
}

$shoplist = new shoplist_res($vars,$HTTP_COOKIE_VARS);
//$shoplist->_shoplist_res();
unset($sthoplist);
?>


以上的php,正文的是我毗连数据库获得的数据,既然放下去测试,也没无数据库毗连,所以改了一下.偶也是刚接解xml不久,良多中央仍是不很懂.见笑了......

大家如果能懂得“熟能生巧”的道理也就明白了这并不是浪费时间,同时这也可以减轻板主的负担,让他们有时间去处理更难的问题。

第二个灵魂 发表于 2015-2-4 13:11:01

小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。

金色的骷髅 发表于 2015-2-7 10:25:03

对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。

活着的死人 发表于 2015-2-9 08:13:19

本文当是我的笔记啦,遇到的问题随时填充

飘飘悠悠 发表于 2015-2-10 00:25:31

使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的

乐观 发表于 2015-2-10 17:31:22

php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)

精灵巫婆 发表于 2015-2-28 04:58:50

刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。

莫相离 发表于 2015-3-6 18:51:04

其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。

谁可相欹 发表于 2015-3-13 05:22:17

说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。

柔情似水 发表于 2015-3-20 13:51:37

刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。

蒙在股里 发表于 2015-3-24 17:27:58

个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。

小妖女 发表于 2015-4-2 13:48:13

学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。

若天明 发表于 2015-4-3 21:24:27

其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎

透明 发表于 2015-4-3 21:54:08

最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。

只想知道 发表于 2015-4-5 11:50:14

小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。

小女巫 发表于 2015-4-6 21:08:46

为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。

仓酷云 发表于 2015-4-7 00:17:19

如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,

再见西城 发表于 2015-4-11 02:10:29

如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,

山那边是海 发表于 2015-4-15 02:32:26

在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。

分手快乐 发表于 2015-4-23 00:05:16

为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
页: [1]
查看完整版本: PHP教程之xml+php静态载入与分页