JBTALKS.CC

标题: 看看大家显示页数的coding是怎样的 [打印本页]

作者: wu6    时间: 2009-1-3 07:10 PM
标题: 看看大家显示页数的coding是怎样的
资料库资料 : 400个records
每页显示records的数量 : 10个

例如当前在第五页, 就要显示 3 4 5 6 7
要考虑到第一,第二页的情况,最后一页的情况就不需要列入考虑范围。

看看大家的coding 长不长
作者: Super-Tomato    时间: 2009-1-4 01:27 AM
建議樓主先把自己的 coding 貼出來會比較好吧
作者: wu6    时间: 2009-1-8 11:21 AM
在这个例子,第一页和第二页是比较特殊的。
第一页要显示的是 1 2 3 4 5 而不是 -1 0 1 2 3
第二页要显示的是 1 2 3 4 5 而不是 0 1 2 3 4

我是这样写
<?php
for ($i <= $page - 2 ; $i <= $page + 2; $i++)
{
  if($page <= 2)
  {
  $j = $i + (3 - $page);
  echo "<a href = 'display.php?pid= $j '>$j</a>";
  }
else
echo "<a href = 'display.php?pid= $i '>$i</a>";

}

[ 本帖最后由 wu6 于 2009-1-8 12:23 PM 编辑 ]
作者: Super-Tomato    时间: 2009-1-8 01:11 PM
原帖由 wu6 于 2009-1-8 11:21 AM 发表
在这个例子,第一页和第二页是比较特殊的。
第一页要显示的是 1 2 3 4 5 而不是 -1 0 1 2 3
第二页要显示的是 1 2 3 4 5 而不是 0 1 2 3 4

我是这样写
<?php
for ($i <= $page - 2 ; $i <= $page + 2; $i++)
{
  if($page <= 2)
  {
  $j = $i + (3 - $page);
  echo "<a href = 'display.php?pid= $j '>$j</a>";
  }
else
echo "<a href = 'display.php?pid= $i '>$i</a>";

}


不太明白為何要這樣寫, 如果只是為了要讓啟始頁為 1 的話, 大可這樣寫

<?PHP

$page = $page < 1? 1 : $page;
$max = $page + 5;

for($i=$page; $i <= $max; $i++)
    echo "<a href = 'display.php?pid=$i'>$i</a>";

?>
作者: wu6    时间: 2009-1-8 07:46 PM
我想你不了解我要的是什么

我要当前的页数在中间。
就好像现在是第三页, 就是 1 2 3 4 5 而不是3 4 5 6 7
作者: wu6    时间: 2009-1-8 07:47 PM
假设第十页 ,那么就是 8 , 9 , 10, 11 ,12
作者: wu6    时间: 2009-1-8 07:49 PM
原帖由 Super-Tomato 于 2009-1-8 01:11 PM 发表

不太明白為何要這樣寫, 如果只是為了要讓啟始頁為 1 的話, 大可這樣寫

<?PHP

$page = $page < 1? 1 : $page;
$max = $page + 5;

for($i=$page; $i <= $max; $i++)
    echo "<a href = 'display.php?pid=$i'>$i</a>";

?>

  


像你这样写,如果我现在在第八页,那么就是 8 9 10 11 12, 如果我要返回第七页,那么就没有选择了,所以应该要是 6 7 8 9 10
作者: Super-Tomato    时间: 2009-1-8 08:28 PM
原帖由 wu6 于 2009-1-8 07:46 PM 发表
我想你不了解我要的是什么

我要当前的页数在中间。
就好像现在是第三页, 就是 1 2 3 4 5 而不是3 4 5 6 7



明白你的意思了, 靈活性寫法可以這樣

<?PHP

$view_page = 9;  //總共需要顯示的頁數, 只要更改這個即可
$range = floor($view_page /2);
$start_page = $page <= $range ? 1 : $page - $range;
$end_page = $start_page + $view_page;

for($i=$start_page; $i < $end_page; $i++)
    echo " " . ($page != $i ? "<a href = 'display.php?pid=$i'>$i</a> " : $i);

?>


p/s: 怎麼根據資料筆數計算最後一頁就看你自己了

[ 本帖最后由 Super-Tomato 于 2009-1-8 08:34 PM 编辑 ]
作者: wu6    时间: 2009-1-9 08:09 PM
那么如果要显示n 页数,我的写法是


<?php

$temp1 = 5 //显示数量
$temp = floor($temp / 2);

for ($i <= $page - $temp ; $i <= $page + $temp; $i++)
{
  if($page <= 2)
  {
  $j = $i + (($temp + 1) - $page);
  echo "<a href = 'display.php?pid= $j '>$j</a>";
  }
else
echo "<a href = 'display.php?pid= $i '>$i</a>";

}
作者: wu6    时间: 2009-1-9 08:09 PM
只有我们两个人哦?没有其他人哦?
作者: Super-Tomato    时间: 2009-1-9 08:23 PM
原帖由 wu6 于 2009-1-9 08:09 PM 发表
那么如果要显示n 页数,我的写法是

$temp1 = 5 //显示数量
$temp = floor($temp / 2);

for ($i <= $page - $temp ; $i <= $page + $temp; $i++)
{
  if($page <= 2)
  {
  $j = $i + (($temp + 1) - $page);
  echo "<a href = 'display.php?pid= $j '>$j</a>";
  }
else
echo "<a href = 'display.php?pid= $i '>$i</a>";

}



幾點應該注意一下

第一點應該是筆誤吧
第二點儘量別養成在 for 中做計算, 這樣比較耗計算量, 尤其在大範圍的情況下可以明顯看出
第三點的 2 不夠靈活性, 既然有了 $temp 就應該好好利用
作者: yurt    时间: 2009-3-4 09:46 PM
我也来学习学习,获益不浅
作者: belon_cfy    时间: 2009-6-2 10:03 PM
楼主,这是我做的效果。仅供测试用途、
http://fanyong.net/support/main.php




欢迎光临 JBTALKS.CC (https://jbtalks.my/) Powered by Discuz! X2.5