每页计数条目错误

时间:2016-08-03 01:22:36

标签: php

我正在一个网站上工作,该网站有分页条目并想要输出您当前的位置,例如Showing 10-18 of 50 results但如果条目少于每页限制,则无法获得正确的输出。

该网站使用ExpressionEngine,其中URI的最后一段指示您在页面列表中的位置,因此如果每页限制为9,则当您在第二个页面上时,URI将为/path/to/page/P9/页面,P18第3页等。

这是我到目前为止所做的:

$output        = '';

// the variables below are passed from a template to a plugin which does the processing

$url_segment   = $this->EE->TMPL->fetch_param('url_segment'); // e.g. P9, P18 etc.
$per_page      = $this->EE->TMPL->fetch_param('page_num'); // e.g. 9
$total_entries = $this->EE->TMPL->fetch_param('total'); // e.g. 50

$current_page  = preg_match('/^P+[0-9]+$/', $url_segment) === 1 ? str_replace('P','', $url_segment) +1 : 1;

if ($total_entries == 1) {
    $output .= '1 tour';
} else {
    if ($total_entries <= $per_page){
        $output .= '1 to '.($per_page<=$total_entries ? $total_entries : $per_page);
    } else {
        $output .= $current_page.' to ';
        $output .= $current_page+$per_page-1;
    }
    $output .= ' of '.$total_entries.' tours';
}

return $this->return_data = $output;

if ($total_entries <= $per_page)似乎没有评估为真,例如如果页面限制为9但只有三个条目,则它会说1 to 9 of 3 entries

我认为这可能是因为我需要使变量整数但是这样做意味着条件的另一端总是评估为真,所以当有更多的条目表示每页限制时,输出总是相同的,不管你在哪个页面,例如所有页面都1 to 14 of 14 entries

我哪里错了?

1 个答案:

答案 0 :(得分:1)

if ($total_entries <= $per_page){
    $output .= '1 to '.($per_page<=$total_entries ? $total_entries : $per_page);

在这一部分,您首先检查$total_entries是否小于或等于$per_page,但在此之后,您检查它是否更多或相等。这里的逻辑错误(你的第二个if语句被反转)。

试试这个:

if ($total_entries <= $per_page){
    $output .= '1 to '.$total_entries;