免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2143 | 回复: 7
打印 上一主题 下一主题

问个非mysql分页显示的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-09 12:59 |只看该作者 |倒序浏览
看过精华区和搜索过一些分页的资料。
知道数组分页应该和mysql数组返回分页差不多。

不过到了具体实际的时候,碰到了点问题,卡住了。

我现在有个2维数组, data_array[$row][$Col]=>COL_DATA;

通过sizeof($data_array)取得总共的数组数,然后在这个循环里,再去做col的循环,把每个row的每个col的数据
输出在一个页面上。由于前面的人已经做出来,我刚接手。觉得这么多数据都显示在一个页面上,太长了。
所以想作个分页。

请问我该如何做呢?

逻辑跳转:

  1. DEFINE( "DATA_COLUMNS",
  2.    "ID,Name,Address,Ages,Sex,Status,Q_A,Assgined_Task" );

  3. ...
  4. switch($page){
  5. ...
  6. ...
  7. case "home":
  8.   在这里用了global的变量,xml形式的数据文件
  9.   以2维数组的形式存入$data_array变量中。

  10.   dis_page_header();
  11.   dis_page_data($data_array);
  12. ...
  13. }
  14. ...

  15. Function dis_page_header($data){
  16.       
  17.         print "<div >\n";
  18.         print "<table id='results' cellspacing='1' border='0' width='100%' summary='Data Table'>\n";
  19.         print "<thead>\n";
  20.         
  21.         ##打印数据的列名,就是DATACOLUMNS的内容
  22.         $element_entry = explode(",", DATA_COLUMNS );

  23.                 foreach ($element_entry as $column_name) {

  24.                 print "\t\t<th>" . strtr($column_name, "_", " ") . " </th>\n";
  25.         }
  26.         print "\t</tr>\n</thead>\n<tbody>";
  27.         

  28.         $row_cnt = sizeof($data_array);

  29.         #
  30.         # get all datas
  31.         # row is the number of total issues.
  32.         # 循环row,在row循环里,打印各row的col值
  33.          
  34.         for ( $row = 0; $row < $row_cnt; $row++ ) {

  35.                         #
  36.                         # element_entry is the number of Home page display column
  37.                         #
  38.                        
  39.                         foreach ($element_entry as $column) {

  40.                                 $data_array[$row][$column] = trim( $data_array[$row][$column] );
  41.                                 print (($data_array[$row][$column]) ? $data_array[$row][$column] : '&nbsp;' ); ////就是在这里输出全部的数据到页面了
  42.                                 print "</td>\n";
  43.                         }
  44.                         print "\t</tr>\n";
  45.                 }
  46.         }
  47.         print "</tbody></table>\n</div>";
  48. }
复制代码


小弟一下字卡住了,请问思维灵活的大大们,我该如何做分页呢?
最好可以给下逻辑思维。

论坛徽章:
0
2 [报告]
发表于 2009-06-09 13:10 |只看该作者
可能小弟没说清楚,就是要把上面的data array给按照每页多少条(某参数),来给这个page home分页显示数据

论坛徽章:
0
3 [报告]
发表于 2009-06-09 14:20 |只看该作者
array_chunk -- 将一个数组分割成多个

论坛徽章:
0
4 [报告]
发表于 2009-06-09 14:22 |只看该作者
不是为了页面太长而分页,而是为了一次查询的数据量的性能而分页

论坛徽章:
0
5 [报告]
发表于 2009-06-09 18:52 |只看该作者
以前的人学PHP都是从文本数据开始的,现在学PHP直接从mysql开始,所以基础大不如以前

  1. $per = 20; #每页显示多少条

  2. $page = intval($_GET["page"]); #当前页

  3. $star = $per * ( $page - 1);

  4. for ( $i = $star; $i < $per; $i++)
  5. {
  6. }

复制代码

论坛徽章:
0
6 [报告]
发表于 2009-06-10 08:01 |只看该作者
计算分页的代码我知道怎么分,chunk我也会,关键是, 你分了当前页以后,下个页面的数据怎么传?
才把话题说清楚,原来是这里卡住了。

我已经写好分页计算的函数,比如总共数组的多少条数据ALL,按照每页显示多少条的规定CONST_RECORDS来分,这个
算法我会的,关键是不知道把这个array_data分了一次以后,chunk好的剩下的数组如何传到下一页。不好意思
本人sa出身,编程经验就半年。工作性质95%sa,5%用用vba和bat,或者脚本写维护。
代码真的比较笨,望大家见谅 。恳请高手指点下思路。

论坛徽章:
0
7 [报告]
发表于 2009-06-10 16:07 |只看该作者
看来还是没人愿意动动手指点下

论坛徽章:
0
8 [报告]
发表于 2009-06-10 16:54 |只看该作者
若总共数组的多少条数据ALL,按照每页显示多少条的规定CONST_RECORDS来分
则总页数为:ceil(ALL/CONST_RECORDS)
切割数组:$rs = array_data(数组, CONST_RECORDS)
当前页:$page
输出:$rs[$page - 1] 这个数组元素
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP