Я использую очень элегантный скрипт нумерации @Nev Stokes:
моя версия скрипта в настоящее время настроена на прокрутку каждой строки моей таблицы sql по одной строке за раз, используя кнопки prev / next. Я пытаюсь добавить в выпадающий список, который выплевывает все строки 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,
),
)));
Затем он добавляет от 1 до $ page для следующей кнопки, вычитает 1 из $ page для предыдущей кнопки и записывает в 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
, и так далее.
Других решений пока нет …