【问题标题】:Maths with $variable++ taking a page number and working out start number使用 $variable++ 计算页码并计算起始编号的数学
【发布时间】:2014-08-04 20:20:35
【问题描述】:

这更像是一道数学题,但仍然相关。

所以,

我有一个基本的 cms,每页显示 4 篇博文。页码在网址中,所以我可以得到。

我正在尝试在 foreach 循环中使用 $variable++ 对结果进行编号,但是当加载新页面时,它当然会重置回 1。

第 1 页示例:

$postNumber = 1;

foreach:
  echo "$postNumber";
  $postNumber++;
endforeach;

现在问题出现在第 2 页时。

我需要想出一种方法来获取页码,然后创建下一组帖子编号。

所以需要的帖子编号/页码是:

Page Number / Post start number
1 / 1
2 / 5
3 / 9
4 / 13
5 / 17
6 / 21
7 / 25
etc

每个页码/帖子号之间的差距每次增加 3(0、3、6、9、12、15 等)

数学不是我的强项,或者可能是因为它迟到了……但我想不出办法做到这一点。有意义吗?

【问题讨论】:

  • pageNumber / (pageNumber - 1) * 4 + 1 怎么样
  • 我认为你可以使用 $_SESSION 在页面之间存储你需要的值。会话在浏览器打开之前一直处于活动状态(保存值),因此即使您关闭相关选项卡,然后重新进入页面,它仍然会记住 Post Start Number。看看这个:link。现在,当您单击 NEXT / BACK 时,您只需发送一个 POST var 并增加 / 减少 $_SESSION 中存储的值。我希望它有所帮助。祝你好运

标签: php math logic increment


【解决方案1】:

您的帖子编号每页增加 4 个:

$postNumber = 1;
$pageNumber = 1;

foreach:
    echo $pageNumber, '/', $postNumber;
    $postNumber += 4;
    ++$pageNumber;
endforeach;

【讨论】:

    【解决方案2】:

    感谢回复,朋友给的答案是这样的:

      $postNumber = ($pageNumber * 4) - 3;
    

    按计划进行。

    “简单的第 N 项公式”...

    【讨论】:

    • 太棒了!您可以通过在最后添加此解决方案来更新您的问题,它可能会对其他人有所帮助。
    【解决方案3】:

    您可以通过使用LIMIT 和一些基本数学来实现这一点:

    $current_page = $_GET['page']; // Or whatever   
    $per_page = 4;
    $start = $per_page * ($current_page - 1);
    
    $query = 'SELECT * FROM posts LIMIT ' . $start . ',' . $per_page . ';';
    

    这是另一个更好地解释分页和 MySQL 的答案的链接:MySQL Data - Best way to implement paging?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-04
      • 1970-01-01
      相关资源
      最近更新 更多