помогите разобраться с пагинацией
ковыряю браузерную игру, не могу довести до ума пагинацию на странице. Впринципе все работает, но коряво. Смысл в том, что после регистрации, пользователю предлагается выбрать персонажа. Я добавил по 22 персонажа женского и мужского пола. Чтобы не листать страницу вниз, решил добавить пагинацию (выводится по 4 персонажа на страницу). Проблема в том, что если выбирать между мужскими персонажами все работает, но если прерключиться на вкладку женских персонажей, то при переключении страниц перебрасывает на вкладку с мужскими персонажами.
<div class="card">
<div class="card-body">
<center><h4><i class="far fa-hand-pointer"></i> Choose your character</h4></center><br />
<ul class="nav nav-tabs nav-justified">
<?php
$first = true;
$querycc = mysqli_query($mysqli, "SELECT * FROM `character_categories`");
while ($rowcc = mysqli_fetch_assoc($querycc)) {
?>
<li class="nav-item <?php
if ($first) {
echo 'active';
}
?>"><a data-bs-toggle="tab" class="nav-link <?php
if ($first) {
echo 'active';
$first = false;
}
?>" href="#id<?php
echo $rowcc['id'];
?>"><i class="fa-solid <?php
echo $rowcc['fa_icon'];
?>"></i> <?php
echo $rowcc['category'];
?></a></li>
<?php
}
?>
</ul>
<form role="form" action="" method="post">
<div class="tab-content">
<?php
$firsta = true;
$queryccs = mysqli_query($mysqli, "SELECT * FROM `character_categories`");
while ($rowccs = mysqli_fetch_assoc($queryccs)) {
$category_id = $rowccs['id'];
?>
<div id="id<?php
echo $category_id;
?>" class="tab-pane fade <?php
if ($firsta) {
echo 'show active';
$firsta = false;
}
?>">
<div class="row">
<?php
if (isset($_GET['page_no']) && $_GET['page_no']!="") {
$page_no = $_GET['page_no'];
} else {
$page_no = 1;
}
$total_records_per_page = 4;
$offset = ($page_no-1) * $total_records_per_page;
$previous_page = $page_no - 1;
$next_page = $page_no + 1;
$adjacents = "2";
$result_count = mysqli_query($mysqli, "SELECT COUNT(*) As total_records FROM `characters` WHERE category_id = '$category_id' ");
$total_records = mysqli_fetch_assoc($result_count);
$total_records = $total_records['total_records'];
$total_no_of_pages = ceil($total_records / $total_records_per_page);
$second_last = $total_no_of_pages - 1; // total page minus 1
$queryc = mysqli_query($mysqli, "SELECT * FROM `characters` WHERE category_id = '$category_id' LIMIT $offset, $total_records_per_page");
while ($rowc = mysqli_fetch_assoc($queryc)) {
?>
<div class="col-md-3">
<center>
<h4><br /><span class="badge bg-named"><?php
echo $rowc['name'];
?></span></h4>
<p><?php
echo $rowc['description'];
?></p>
</center>
<label class="btn btn-secondary">
<input type="radio" name="character" value="<?php
echo $rowc['id'];
?>" required />
<img src="<?php
echo $rowc['image'];
?>" width="80%" />
</span><hr />
<center>
<div style ="font-size:14px;"><i class="fa-solid fa-hand-fist"></i> Strength bonus</div>
<div class="progress1 mb-3">
<div class="progress-bar progress-bar-striped bg-danger" style="width: <?php
echo percent($rowc['power'], 20);
?>%;">
</div>
</div>
<div style ="font-size:14px;"><i class="fa-solid fa-arrows-spin"></i> Agility bonus</div>
<div class="progress1 mb-3">
<div class="progress-bar progress-bar-striped bg-success" style="width: <?php
echo percent($rowc['agility'], 20);
?>%;">
</div>
</div>
<div style ="font-size:14px;"><i class="fa-solid fa-shield-halved"></i> Endurance bonus</div>
<div class="progress1 mb-3">
<div class="progress-bar progress-bar-striped bg-info" style="width: <?php
echo percent($rowc['endurance'], 20);
?>%;">
</div>
</div>
<div style ="font-size:14px;"><i class="fa-solid fa-brain"></i> Intelligence bonus</div>
<div class="progress1 mb-3">
<div class="progress-bar progress-bar-striped bg-warning" style="width: <?php
echo percent($rowc['intelligence'], 20);
?>%;">
</div>
</div>
</center>
</div>
<?php
mysqli_close($con);
}
?>
</div>
</div>
<?php
}
?>
</div>
<ul class="pagination" style="justify-content: center;">
<li <?php if($page_no <= 1){ echo "class='disabled'"; } ?>>
<a <?php if($page_no > 1){ echo "href='?page_no=$previous_page'"; } ?>><i class="fa fa-angle-left"></i> </a>
</li>
<?php
if ($total_no_of_pages <= 10){
for ($counter = 1; $counter <= $total_no_of_pages; $counter++){
if ($counter == $page_no) {
echo "<li class='active'><a>$counter</a></li>";
}else{
echo "<li><a href='?page_no=$counter'>$counter</a></li>";
}
}
}
elseif($total_no_of_pages > 10){
if($page_no <= 4) {
for ($counter = 1; $counter < 8; $counter++){
if ($counter == $page_no) {
echo "<li class='active'><a>$counter</a></li>";
}else{
echo "<li><a href='?page_no=$counter'>$counter</a></li>";
}
}
echo "<li><a>...</a></li>";
echo "<li><a href='?page_no=$second_last'>$second_last</a></li>";
echo "<li><a href='?page_no=$total_no_of_pages'>$total_no_of_pages</a></li>";
}
elseif($page_no > 4 && $page_no < $total_no_of_pages - 4) {
echo "<li><a href='?page_no=1'>1</a></li>";
echo "<li><a href='?page_no=2'>2</a></li>";
echo "<li><a>...</a></li>";
for ($counter = $page_no - $adjacents; $counter <= $page_no + $adjacents; $counter++) {
if ($counter == $page_no) {
echo "<li class='active'><a>$counter</a></li>";
}else{
echo "<li><a href='?page_no=$counter'>$counter</a></li>";
}
}
echo "<li><a>...</a></li>";
echo "<li><a href='?page_no=$second_last'>$second_last</a></li>";
echo "<li><a href='?page_no=$total_no_of_pages'>$total_no_of_pages</a></li>";
}
else {
echo "<li><a href='?page_no=1'>1</a></li>";
echo "<li><a href='?page_no=2'>2</a></li>";
echo "<li><a>...</a></li>";
for ($counter = $total_no_of_pages - 6; $counter <= $total_no_of_pages; $counter++) {
if ($counter == $page_no) {
echo "<li class='active'><a>$counter</a></li>";
}else{
echo "<li><a href='?page_no=$counter'>$counter</a></li>";
}
}
}
}
?>
<li <?php if($page_no >= $total_no_of_pages){ echo "class='disabled'"; } ?>>
<a <?php if($page_no < $total_no_of_pages) { echo "href='?page_no=$next_page'"; } ?>> <i class="fa fa-angle-right"></i></a>
</li>
<?php if($page_no < $total_no_of_pages){
echo "<li><a href='?page_no=$total_no_of_pages'> Last</a></li>";
} ?>
</ul>
<input type="submit" name="start" value="Start The Game" class="btn btn-success btn-lg col-12">
</form>
</div>
</div>
Ответы (1 шт):
Автор решения: Максим
→ Ссылка
Нашел решение через cохранение в LocalStorage на JS
$(function($){
var storage = localStorage.getItem('nav-tabs');
if (storage && storage !== "#") {
$('.nav-tabs a[href="' + storage + '"]').tab('show');
}
$('ul.nav li').on('click', function() {
var id = $(this).find('a').attr('href');
localStorage.setItem('nav-tabs', id);
});
});