以下代码可以将“9.xml”的shortdesc字段全部读出:
-------------------------------------------------------------------------------
<?php
$xml_array=simplexml_load_file('9.xml'); //将XML中的数据,读取到数组对象中foreach($xml_array as $tmp){
echo $tmp->shortdesc."<br>";
}?>
---------------------------------------------------------------------------------
由于数据量非常大,我想实现的是每页只显示三条数据,当点击“下一步”按钮时,就接着显示下三条数据,直到数据全部显示完成,再点“下一步”按钮时,页面没有变化。请教如何实现?最好有代码,谢谢了。

解决方案 »

  1.   

    那就不应该存到xml里面,存到数据库里面
      

  2.   

    如果能存在数据库里,那么操作会很方便。如果不能的话,可以将解析的数据先缓存下来最好
    <?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;
    ?>
      

  3.   

    你原来是这样输出的
    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>";
    }
      

  4.   

    老大的代码够明了的了
    // 获取数组
    $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 喽
      

  5.   

    这个循环语句我是已经明白,现在还有一个疑问:“$xml[$i]”是怎么来的?是不是还少了一句啊?请赐教,谢谢!
      

  6.   

    $xml[$i] 就是 $xml_array[$i] 。 伪代码,表达的意思是一样
      

  7.   


    为简化,我只显示一页,我用以下代码,既没结果,也没用错误提示:---------------------------------------------------------------------------------------------
    <?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>";
    }
    ?>
    -------------------------------------------------------------还请赐教!
      

  8.   

    因为你有:
    $xml_array=simplexml_load_file('9.xml'); //将XML中的数据,读取到数组对象中
    才有所以我才有 $xml_array[$i]->shortdesc 一说,数组嘛
    实际上 simplexml_load_file 返回的结构中,第一层并不是数组
    需要知道你的 9.xml 具体内容,才能知道如何操作
      

  9.   

    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>
      

  10.   

    那就是你的不对了,你从一开始就没有提供正确的信息
    你的
    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>";
    }
    就成立了