Php 正在断开分页页码计数
我正在使用下面给出的分页脚本。问题是它提供了连续的页面计数。例如,如果有10个页面,它会给出数字Php 正在断开分页页码计数,php,jquery,html,pagination,Php,Jquery,Html,Pagination,我正在使用下面给出的分页脚本。问题是它提供了连续的页面计数。例如,如果有10个页面,它会给出数字12345678910(所有页面都可以点击)。我想要的是在5之后中断分页计数。它应该显示12345...910。然后,当我点击第5页时,它应该隐藏1并显示6为2 3 4 5 6…9 10。请帮帮我 $start = 0; $limit = 1; if(isset($_GET['id'])){ $id = (!empty($_GET['id']))?$_GET['id']:null; $sta
12345678910
(所有页面都可以点击)。我想要的是在5之后中断分页计数。它应该显示12345...910
。然后,当我点击第5页时,它应该隐藏1并显示6为2 3 4 5 6…9 10
。请帮帮我
$start = 0;
$limit = 1;
if(isset($_GET['id'])){
$id = (!empty($_GET['id']))?$_GET['id']:null;
$start = ($id-1)*$limit;
}else{
$id = null;
}
$stmt = $pdo->prepare("SELECT ad_id, ad_description, ad_url, ad_memclicks, ad_visclicks, ad_status, avc_clicks FROM ads
LEFT JOIN ads_viewed_cost ON ads.ad_clicks = ads_viewed_cost.avc_id
WHERE ad_user = :user LIMIT $start, $limit");
$stmt-> bindValue(':user', $sessionid);
$stmt-> execute();
$count = $pdo->prepare("SELECT COUNT(*) as cnt FROM ads LEFT JOIN ads_viewed_cost ON ads.ad_clicks = ads_viewed_cost.avc_id WHERE ad_user = :user");
$count-> bindValue(':user', $sessionid);
$count-> execute();
$rf = $count->fetch();
$rows = $rf['cnt'];
$total = ceil($rows/$limit);
if($id>1){
echo "<span class='pre'><a href='?id=".($id-1)."' class='button'>PREVIOUS</a></span>";
}
if($id!=$total){
echo "<span class='next'><a href='?id=".($id+1)."' class='button'>NEXT</a></span>";
}
echo "<ul class='pagination'>";
for($i=1; $i<=$total; $i++){
if($i == $id){
echo "<li class='current'>".$i."</li>";
}else{
echo "<li><a href='?id=".$i."'>".$i."</a></li>";
}
}
echo "</ul>";
$start=0;
$limit=1;
如果(isset($\u GET['id'])){
$id=(!empty($\u GET['id'])?$\u GET['id']:null;
$start=($id-1)*$limit;
}否则{
$id=null;
}
$stmt=$pdo->prepare(“从广告中选择广告id、广告描述、广告url、广告memclicks、广告visclicks、广告状态、avc_点击
左键加入广告\u已浏览\u广告成本。广告点击=广告\u已浏览\u成本。avc\u id
其中ad_user=:user LIMIT$start,$LIMIT”);
$stmt->bindValue(':user',$sessionid);
$stmt->execute();
$count=$pdo->prepare(“选择count(*)作为来自ads的cnt左键在ads上加入ads_viewed_cost.ad_clicks=ads_viewed_cost.avc_id,其中ad_user=:user”);
$count->bindValue(':user',$sessionid);
$count->execute();
$rf=$count->fetch();
$rows=$rf['cnt'];
$total=ceil($rows/$limit);
如果($id>1){
回声“;
}
如果($id!=$total){
回声“;
}
回声“”;
对于($i=1;$i我不认为您所描述的是进行分页的最佳方式,因为您正在丢失第一页,但这正是您所要求的
$dots = false;
for ( $i=1; $i<=$total; $i++ ) {
if( $i == $id ) {
echo "<li class='current'>{$i}</li>";
} else {
if ( ( $id < 5 && $i < 5 ) || ( ( $i > $id-4 && $i < $id ) || $i > $total-2 || $i == $id+1 ) ) {
echo "<li><a href='?id=".$i."'>{$i}</a></li>";
} else {
if ( $i > $id && !$dots ) {
echo "...";
$dots = true;
}
}
}
}
好的,对不起我的错误。你是对的。我想使用第二种方法。但是当我用我的代码替换你的代码时,三个点只出现在最后一个数字之后,而不是你在上面的示例中给出的1…12 13[14]15 16…100
。只有我得到的点不在正确的位置,否则代码会按照你说的那样工作。$id
?哪一页的$id
?两个点集只会在10页集中的第5页和第6页上出现。不,它不会出现在你提到的地方。。它出现在最后一个数字之后,无论我在哪一页。。但是谢谢你你的解决方案..除了点的东西我得到了我想要的休息…谢谢:)奇怪,因为我和它的工作方式描述。您是否按原样接受了第二个代码段?删除HTML的工作示例我只是完全复制了它。。。正如我在第一条评论中提到的那样。。
$dotsLow = false;
$dotsHi = false;
for ( $i=1; $i<=$total; $i++ ) {
if( $i == $id ) {
echo "<li class='current'>{$i}</li>";
} else {
if (
( $i == 1 || $i == $total ) ||
( $id < 5 && $i < 5 ) ||
( $id > $total-4 && $i > $total-4 ) ||
( $i >= $id-2 && $i <= $id+2)
) {
echo "<li><a href='?id=".$i."'>{$i}</a></li>";
} else {
if ( $i > $id && !$dotsHi ) {
echo "...";
$dotsHi = true;
}
if ( $i < $id && !$dotsLow ) {
echo "...";
$dotsLow = true;
}
}
}
}