Pagination

loktoy

Established
patulong po kasi po kapag pinipindot ko yun next ay dumidiritso na agad sya sa page 11..
gusto ko po mangyari is kapag icclick ko yun next ay yun susunod na number nya yun magiging active.
ito po code ko...
if (isset($_GET['page_no']) && $_GET['page_no'] !=="") {
$page_no =$_GET['page_no'];
}else {
$page_no =1;
}
$total_records_per_page = 20;
$numbers_per_page = 10;
$offset = ($page_no - 1) * $total_records_per_page;
$previous_page =$page_no -1;
$next_page = $page_no +1;
$result_count = mysqli_query($con,"SELECT COUNT(*) AS total_records FROM registration INNER JOIN lddap ON registration.payee_name = lddap.payee_name WHERE registration.email_address = '$email_address' AND registration.password = '$password'") or die (mysqli_error($con));
$records = mysqli_fetch_array($result_count);
$total_records = $records['total_records'];
$total_no_of_page = ceil($total_records / $total_records_per_page);



kapag naman dinadagdag ko naman ang $start_number = 1 ay lumalabas yun lahat ng pagination na di dapat na nakalimit lang sya ng 10 per view..

ito ko code ko po
<div class="pt-1">
<nav aria-label="Page navigation example">
<div class= "container p-10">
<strong>Page <?= $page_no; ?> of <?= $total_records_per_page;?></strong>
<ul class="pagination">
<li class ="page-item"><a class="page-link" <?= ($page_no <= 1) ? 'disabled style="background-color:gray "' : '' ; ?> <?= ($page_no > 1) ? 'href=?page_no=' .$previous_page : '' ; ?>>Previous</a></li>
<?php for ($counter = $start_number ; $counter <= $end_number; $counter++) { ?>
<?php if ($page_no != $counter){ ?>
<li class ="page-item"><a class="page-link" href="?page_no=<?= $counter; ?>"><?= $counter; ?></a></li><?php } else { ?> <li class ="page-item"><a class="page-link active" ><?= $counter; ?></a></li><?php }?> <?php }?>

<li class ="page-item"><a class="page-link" <?= ($page_no >= $total_no_of_page) ? 'disabled style="background-color:gray"' : '' ; ?> <?= ($page_no < $total_no_of_page) ? 'href=?page_no=' .$next_page : '' ; ?>>Next</a></li>
</div>
</nav>
</div>

$start_number =($page_no - 1) * $numbers_per_page + 1;
$end_number = min($start_number + $numbers_per_page - 1, $total_no_of_page);
// End Pagination php
// Start Query to Database
 
Ang problema sa iyong code ay hindi mo na-update ang mga variables na kailangan para sa pagination. Kailangan mo baguhin ang mga sumusunod na bahagi ng code:

1. Sa bahagi ng pagkuha ng $start_number at $end_number, dapat mo itong ilagay pagkatapos mong ma-compute ang $total_no_of_page:

PHP:
$total_no_of_page = ceil($total_records / $total_records_per_page);
$start_number = ($page_no - 1) * $total_records_per_page + 1;
$end_number = min($start_number + $total_records_per_page - 1, $total_records);

2. Sa bahagi ng pag-loop sa mga page number, dapat mong i-update ang pag-check kung active ang current page number. Palitan ang $start_number sa for loop ng $page_no:

PHP:
<?php for ($counter = $page_no; $counter <= $end_number; $counter++) { ?>
  <?php if ($page_no != $counter) { ?>
    <li class="page-item"><a class="page-link" href="?page_no=<?= $counter; ?>"><?= $counter; ?></a></li>
  <?php } else { ?>
    <li class="page-item active"><a class="page-link"><?= $counter; ?></a></li>
  <?php } ?>
<?php } ?>

3. I-update ang pag-check kung active ang previous at next links. Palitan ang $start_number sa conditions ng $previous_page at $next_page:

PHP:
<li class="page-item"><a class="page-link" <?= ($page_no <= 1) ? 'disabled style="background-color:gray "' : '' ; ?> <?= ($page_no > 1) ?  'href=?page_no=' . $previous_page : '' ; ?>>Previous</a></li>
...
<li class="page-item"><a class="page-link" <?= ($page_no >= $total_no_of_page) ? 'disabled style="background-color:gray"' : '' ; ?> <?= ($page_no < $total_no_of_page) ?  'href=?page_no=' . $next_page : '' ; ?>>Next</a></li>

Gumamit ako ng $total_records sa halip na $total_no_of_page para sa $end_number upang tiyakin na hindi lalagpas ito sa kabuuang bilang ng record.

Dapat mong isama ang mga pagbabagong ito sa iyong code para maayos ang pagination ng iyong sistema.
 
hindi pa rin
Ang problema sa iyong code ay hindi mo na-update ang mga variables na kailangan para sa pagination. Kailangan mo baguhin ang mga sumusunod na bahagi ng code:

1. Sa bahagi ng pagkuha ng $start_number at $end_number, dapat mo itong ilagay pagkatapos mong ma-compute ang $total_no_of_page:

PHP:
$total_no_of_page = ceil($total_records / $total_records_per_page);
$start_number = ($page_no - 1) * $total_records_per_page + 1;
$end_number = min($start_number + $total_records_per_page - 1, $total_records);

2. Sa bahagi ng pag-loop sa mga page number, dapat mong i-update ang pag-check kung active ang current page number. Palitan ang $start_number sa for loop ng $page_no:

PHP:
<?php for ($counter = $page_no; $counter <= $end_number; $counter++) { ?>
  <?php if ($page_no != $counter) { ?>
    <li class="page-item"><a class="page-link" href="?page_no=<?= $counter; ?>"><?= $counter; ?></a></li>
  <?php } else { ?>
    <li class="page-item active"><a class="page-link"><?= $counter; ?></a></li>
  <?php } ?>
<?php } ?>

3. I-update ang pag-check kung active ang previous at next links. Palitan ang $start_number sa conditions ng $previous_page at $next_page:

PHP:
<li class="page-item"><a class="page-link" <?= ($page_no <= 1) ? 'disabled style="background-color:gray "' : '' ; ?> <?= ($page_no > 1) ?  'href=?page_no=' . $previous_page : '' ; ?>>Previous</a></li>
...
<li class="page-item"><a class="page-link" <?= ($page_no >= $total_no_of_page) ? 'disabled style="background-color:gray"' : '' ; ?> <?= ($page_no < $total_no_of_page) ?  'href=?page_no=' . $next_page : '' ; ?>>Next</a></li>

Gumamit ako ng $total_records sa halip na $total_no_of_page para sa $end_number upang tiyakin na hindi lalagpas ito sa kabuuang bilang ng record.

Dapat mong isama ang mga pagbabagong ito sa iyong code para maayos ang pagination ng iyong sistema.
po ma fix po... gusto ko po mang yari is yun pagination ko is hanggan 10 lang po tapos kapag mag cclick ako ng next ay magiging number 2, then mag cclick ako ng next number 3 and soon pag dating po ng number 10 pag click ko po ng next ay magiging number 11 na sya pero sa 1st pagination na at lalabas na sakanya is 11,12,13 and soon
 
po ma fix po... gusto ko po mang yari is yun pagination ko is hanggan 10 lang po tapos kapag mag cclick ako ng next ay magiging number 2, then mag cclick ako ng next number 3 and soon pag dating po ng number 10 pag click ko po ng next ay magiging number 11 na sya pero sa 1st pagination na at lalabas na sakanya is 11,12,13 and soon
Kung nais mong limitahan ang bilang ng mga page number na ipapakita sa iyong pagination sa hanggang sampung (10), magagawa mo ito sa pamamagitan ng paggamit ng $start_number at $end_number variables. Narito ang code na inaasahan mong resulta:

PHP:
<?php
if (isset($_GET['page_no']) && $_GET['page_no'] !== "") {
  $page_no = $_GET['page_no'];
} else {
  $page_no = 1;
}
$total_records_per_page = 20;
$numbers_per_page = 10;
$offset = ($page_no - 1) * $total_records_per_page;
$previous_page = $page_no - 1;
$next_page = $page_no + 1;
$result_count = mysqli_query($con, "SELECT COUNT(*) AS total_records FROM registration INNER JOIN lddap ON registration.payee_name = lddap.payee_name WHERE registration.email_address = '$email_address' AND registration.password = '$password'") or die(mysqli_error($con));
$records = mysqli_fetch_array($result_count);
$total_records = $records['total_records'];
$total_no_of_page = ceil($total_records / $total_records_per_page);

$start_number = max($page_no - floor($numbers_per_page / 2), 1);
$end_number = min($start_number + $numbers_per_page - 1, $total_no_of_page);

?>

<div class="pt-1">
  <nav aria-label="Page navigation example">
    <div class="container p-10">
      <strong>Page <?= $page_no; ?> of <?= $total_no_of_page; ?></strong>
      <ul class="pagination">
        <li class="page-item">
          <a class="page-link" <?= ($page_no <= 1) ? 'disabled style="background-color:gray "' : ''; ?> <?= ($page_no > 1) ? 'href=?page_no=' . $previous_page : ''; ?>>Previous</a>
        </li>
        <?php for ($counter = $start_number; $counter <= $end_number; $counter++) { ?>
          <?php if ($page_no != $counter) { ?>
            <li class="page-item">
              <a class="page-link" href="?page_no=<?= $counter; ?>"><?= $counter; ?></a>
            </li>
          <?php } else { ?>
            <li class="page-item active">
              <a class="page-link"><?= $counter; ?></a>
            </li>
          <?php } ?>
        <?php } ?>

        <li class="page-item">
          <a class="page-link" <?= ($page_no >= $total_no_of_page) ? 'disabled style="background-color:gray"' : ''; ?> <?= ($page_no < $total_no_of_page) ? 'href=?page_no=' . $next_page : ''; ?>>Next</a>
        </li>
    </div>
  </nav>
</div>

Sa code na ito, ginamit ko ang max() at min() functions upang limitahan ang mga page number na ipapakita. Ang start_number ay inisyal na inilaan sa $page_no minus ang floor (pagpapababa) ng $numbers_per_page na hinati sa dalawa. Ang end_number ay limitado sa start_number plus $numbers_per_page minus isa. Sa pamamagitan nito, maipapakita mo ang hanggang sampung (10) page number sa bawat pagpapakita ng pagination.
 

About this Thread

  • 3
    Replies
  • 325
    Views
  • 1
    Participants
Last reply from:
Unknown user

Online now

Members online
1,002
Guests online
1,091
Total visitors
2,093

Forum statistics

Threads
2,276,161
Posts
28,967,972
Members
1,231,145
Latest member
kennethCASTRO2012
Back
Top