使用 PHP 为 prev/next 分页脚本中的完整列表中的项目定义 link

Using PHP to define the link for items in a complete list within a prev/next pagination script

我正在使用@Nev Stokes 非常优雅的分页脚本:

here's the SO link

我的脚本版本当前配置为使用 prev/next 按钮一次滚动浏览 sql table 的每一行。我正在尝试添加一个下拉列表,该列表吐出所有 sql 行并单击其中之一将页面前进到正确的页面 #.

分页组件工作正常。但是,对于下拉列表,我无法为每个列表项设置 href 值。

计算 sql 行数后,分页脚本使用以下内容定义当前页面:

// How many items to list per page
  $limit = 1;
// How many pages will there be
  $pages = ceil($total / $limit);
// What page are we currently on?
  $page = min($pages, filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, array(
    'options' => array(
        'default'   => 1,
        'min_range' => 1,
      ),
  )));

然后为下一个按钮将$page加1,为上一个按钮从$page减1,并写入按钮的href。例如)

<a href="?page='.($page + 1).'"title="Next page">

至于我使用的下拉列表:

//begin dropdown list
  echo '<div class="dropdown" style="display:inline; margin-left:5%;">
  <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-expanded="true">
   Browse by address
    <span class="caret"></span>
  </button>
     <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">';
//get all sql rows
 $stmtdd = $conn->prepare('SELECT * FROM listings Order by id DESC');
 $stmtdd->execute();
 $stmtdd->setFetchMode(PDO::FETCH_ASSOC);
 $iteratordd = new IteratorIterator($stmtdd);
  foreach ($iteratordd as $row) {
    $adrdd = $row['address'];
//print the address and link to the page
     echo '<li role="presentation"><a role="menuitem" tabindex="-1" href="?page='.$currpagehref.'">'.$adrdd.'</a></li>';}
     echo '</ul>
  </div>';

我如何定义 $currpagehref(列表项的 href),它需要迭代 sql 行计数中的数字?提前致谢!

由于每行使用 1 页,因此可以使用迭代器中行的索引作为页码。

为此更改您的 foreach :

foreach ($iteratordd as $rowIndex => $row) {

并这样定义你的$currpagehref

href="?page='.($rowIndex + 1).'"

$rowIndex 是从 0 开始的,所以第 1 页是 $rowIndex = 0,依此类推。