gpt4 book ai didi

php - 如何在分页系统 PHP/MySQL 中限制页面?

转载 作者:行者123 更新时间:2023-11-30 22:50:41 25 4
gpt4 key购买 nike

我有一个用于我的用户仪表板的分页系统,基本上我担心的是当用户的 friend 开始发帖到大约 50-60-70 页的时候。

我想要这样:1 2 3 4 5 ... 91然后当用户加载不同的页面时,像这样:1 ... 22 23 24 ... 91

或类似的东西。这样它就不会尝试一次列出所有页面并变得非常丑陋。

我对分页不是很熟悉,我有一个老 friend 帮助我使用这个系统,如果这是一个菜鸟问题,我很抱歉。我在网上四处张望,似乎无法找到一种方法来实现我想在我的系统中做的事情。

我应该重新制作整个东西吗?如果是这样,执行此操作的最佳方法是什么?这是我正在使用的当前函数:

function friendstatus(){
global $session_user_id;
$per_page = 15;
$from_where = "FROM posts WHERE userid in (SELECT friend_id FROM friendship WHERE user_id = $session_user_id AND pending = 0 OR friend_id = $session_user_id) AND visible != 0 ORDER BY `timestamp` DESC";
$sql = "SELECT COUNT(*) ".$from_where;
$res = mysql_query($sql) or trigger_error("Error.");
$row = mysql_fetch_row($res);
$total_rows = $row[0];
if($total_rows != 0){
if(isset($_GET['page'])) $CUR_PAGE = intval($_GET['page']); else $CUR_PAGE=1;
$start = abs(($CUR_PAGE-1)*$per_page);
$sql = "SELECT * $from_where LIMIT $start,$per_page";
$res = mysql_query($sql) or trigger_error("cant get actual data");
while($row=mysql_fetch_array($res)) $DATA[++$start]=$row;
$uri = strtok("/dash","?")."/";
$tmpget = $_GET;
unset($tmpget['page']);
if($tmpget){ $uri .= http_build_query($tmpget)."/"; }
$num_pages=ceil($total_rows/$per_page);
for($i=1;$i<=$num_pages;$i++) $PAGES[$i]=$uri.$i; ?>

Pages:<? foreach ($PAGES as $i => $link): ?> <? if ($i == $CUR_PAGE): ?><b><?=$i?></b> <? else: ?><a href="<?=$link?>"><?=$i?></a> <? endif ?><? endforeach ?> | Total Posts: <b><?=$total_rows?></b>
<hr color="#1F1F1F" width="100%"><br><?foreach($DATA as $i => $row):?>

//show the statuses

<? endforeach ?>

Pages:<? foreach ($PAGES as $i => $link): ?> <? if ($i == $CUR_PAGE): ?><b><?=$i?></b> <? else: ?><a href="<?=$link?>"><?=$i?></a> <? endif ?><? endforeach ?> | Total Posts: <b><?=$total_rows?></b>
<? } //end if $total_rows != 0
} //end function

最佳答案

首先在您希望显示的当前页面周围定义一些范围。

$RANGE = 2; //show 2 pages before and after current

然后确定这个范围的起始页和结束页:

$start = max($CUR_PAGE-$RANGE,1);
$end = min($CUR_PAGE+$RANGE,count($PAGES));

然后替换你的

foreach($PAGES as $i=>$link)

for($i=$start;$i<=$end;$i++) //references to $link in the body become $PAGES[$i] 

对于静态的“前 x 页”和“后 x 页”,您必须进行一些检查以确保不会以 1...12345...91 等重复页面结束。如果您只对第一页和最后一页的链接感兴趣,那么一个简单的 if 语句就足够了,例如,如果您想要显示第一页和最后 3 页,则必须进行一些小的索引调整。

关于php - 如何在分页系统 PHP/MySQL 中限制页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28259751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com