以下代码可以将“9.xml”的shortdesc字段全部读出:
-------------------------------------------------------------------------------
<?php
$xml_array=simplexml_load_file('9.xml'); //将XML中的数据,读取到数组对象中foreach($xml_array as $tmp){
echo $tmp->shortdesc."<br>";
}?>
---------------------------------------------------------------------------------
由于数据量非常大,我想实现的是每页只显示三条数据,当点击“下一步”按钮时,就接着显示下三条数据,直到数据全部显示完成,再点“下一步”按钮时,页面没有变化。请教如何实现?最好有代码,谢谢了。
-------------------------------------------------------------------------------
<?php
$xml_array=simplexml_load_file('9.xml'); //将XML中的数据,读取到数组对象中foreach($xml_array as $tmp){
echo $tmp->shortdesc."<br>";
}?>
---------------------------------------------------------------------------------
由于数据量非常大,我想实现的是每页只显示三条数据,当点击“下一步”按钮时,就接着显示下三条数据,直到数据全部显示完成,再点“下一步”按钮时,页面没有变化。请教如何实现?最好有代码,谢谢了。
<?php
$pagenum = isset($_GET['pagenum']) ? $_GET['pagenum'] : 1;
$pagesize = 3;
// 将数据存在session,当然如果你有更好的条件话就不需要这么干了,存到共享内存当中
session_start();
if( !isset($_SESSION['data']) || !is_array($_SESSION['data']) ){
$xml_array=simplexml_load_file('9.xml');
// 将数据按$pagesize分为多个数组保存
$_SESSION['data'] = array_chunk($xml_array, $pagesize);
}foreach($_SESSION['data'][($pagenum-1)] as $displaydata )
{
echo "I am data: {display}";
}
$nextpagenum = $pagenum + 1;
echo <<<next
<a href="?pagenum={$nextpagenum}" >下一页</a>
next;
?>
foreach($xml_array as $tmp){
echo $tmp->shortdesc."<br>";
}要这样输出才行
$page = ($_GET['page'] - 1) * 3;
for($i=$page; $i<$page+3; $i++) {
echo $xml[$i]->shortdesc."<br>";
}
// 获取数组
$xml_array=simplexml_load_file('9.xml');
// 从第几条开始。你不是要求分页嘛,分页的话总得有个数据起始位置和偏移量。// 那么这个数据起始位置就是 $page。 假设你要第2页,那么传入参数$_GET['page'] === 2
// (2-1)*3 即是 3 。这是按数组键值取得数据的,数组的键值从0开始。那么 0,1,2就是第一页,3,4,5就是第二页
$page = ($_GET['page'] - 1) * 3;
// 循环3次,计算看看$i每次的值,分别是 3, 4, 5 。那么就是上面说的取键值为3,4,5的数据
for($i=$page; $i<$page+3; $i++) {
echo $xml[$i]->shortdesc."<br>";
}
// 下一页的链接传入的参数就是 $_GET['page'] + 1 喽
为简化,我只显示一页,我用以下代码,既没结果,也没用错误提示:---------------------------------------------------------------------------------------------
<?php
$xml_array=simplexml_load_file('9.xml'); //将XML中的数据,读取到数组对象中$page = 3;
for($i=$page; $i<$page+3; $i++) {
echo $xml[$i]->shortdesc."<br>";
}
?>
----------------------------------------------------------------------------------------
我用以下代码,错误提示为:“Warning: main() [function.main]: Cannot add element dataroot number 3 when only 0 such elements exist in D:\wwwroot\jupiter418app\wwwroot\temp\dx1.php on line 66”
----------------------------------------------------------
<?php
$xml_array=simplexml_load_file('9.xml'); //将XML中的数据,读取到数组对象中$page = 3;
for($i=$page; $i<$page+3; $i++) {
echo $xml_array[$i]->shortdesc."<br>";
}
?>
-------------------------------------------------------------还请赐教!
$xml_array=simplexml_load_file('9.xml'); //将XML中的数据,读取到数组对象中
才有所以我才有 $xml_array[$i]->shortdesc 一说,数组嘛
实际上 simplexml_load_file 返回的结构中,第一层并不是数组
需要知道你的 9.xml 具体内容,才能知道如何操作
--------------------------<?xml version="1.0" encoding="utf-8" ?>
<dataroot>
<news>
<new>
<title>短信 </title>
<shortdesc>
<![CDATA[莺飞草长,我们的情谊也随之加深。并不为桃花的落尽,而随之减少。在春风里飘荡的风筝,代表着我的思念,清明节,我们并没有把彼此遗忘。]]>
</shortdesc>
<date>2012-3-23 14:32:30</date>
<link>http://www.282930.cn</link>
</new>
<new>
<title>短信</title>
<shortdesc>
<![CDATA[音乐是我的挂念,钟声是我的问候,歌声是我的祝福,春花是我的贺卡,美酒是我的飞吻,清风是我的拥抱,快乐是我的礼物!出外踏青快乐!清明节快乐!]]>
</shortdesc>
<date>2012-3-23 14:32:30</date>
<link>http://www.csdn.net</link>
</new>
<new>
<title>短信</title>
<shortdesc>
<![CDATA[阴暗的天气,衬托对先人的祭奠之情,在这个日子里,短信还是一如既往的漫天飞舞,希望在2012年的清明节,不要忘记朋友间的一声问候。]]>
</shortdesc>
<date>2012-3-23 14:32:30</date>
<link>http://www.csdn.net</link>
</new>
......
</news>
</dataroot>
你的
foreach($xml_array as $tmp){
echo $tmp->shortdesc."<br>";
}
并不能输出文档内容
要这样才可以
foreach($xml_array->news->new as $tmp){
echo $tmp->shortdesc."<br>";
}而 $xml_array->news->new 是一个数组,于是
$xml = $xml_array->news->new;
$page = min(3, count($xml)-3);
for($i=$page; $i<$page+3; $i++) {
echo $xml[$i]->shortdesc."<br>";
}
就成立了