2011-03-30 5 views
-1

Comment mettre en œuvre un code dans la pagination:La mise en œuvre en PHP pagination

<?php 
    include "connect.php"; 
    $query = mysql_query("SELECT username, date FROM users ORDER BY id ASC"); 
    while($row = mysql_fetch_array($query)): 
?> 
     <div><h5><?php echo $row['username']; ?> (<?php echo $row['date']; ?>)</h5></div> 
<?php endwhile; ?> 
+3

double possible de beaucoup de questions – pt2ph8

+0

double possible [en php pagination] (http://stackoverflow.com/questions/4857663/pagination- in-php) –

Répondre

3

L'idée est de jouer avec mot-clé mysql LIMIT. Cela vous permet de limiter le nombre de résultats que vous obtiendrez de mysql.

SELECT data FROM table LIMIT 5 

est équivalent à

SELECT data FROM table LIMIT 0, 5 

où 0 est le décalage et 5 le nombre de ligne renvoyée par MySQL.

Vous devez fixer un certain nombre d'élément pour afficher, disons $numRes = 10 et un numéro de page:

if (isset($_GET['page']) && is_numeric($_GET['page'])) 
    $page = $_GET['page']; 
else 
    $page = 0; 

et que vous demandez est quelque chose comme:

sprintf($request, "SELECT data FROM pages LIMIT %d, %d", $page, $numRes); 
+0

Le décalage est-il le numéro de page ou la valeur de départ, comme dans (numéro de page * $ numRes)? – Flipper

+0

c'est la valeur de départ, car votre formule décrit @Flipper. – Aif

0
<?php 
    require_once "connect.php"; 
    define('PER_PAGE',5); 
    if (isset($_GET['page']) && is_numeric($_GET['page'])): // in your href use "domain.com/index.php?page=1" 
     $start = $_GET['page_name'] * PER_PAGE; 
     $query = mysql_query("SELECT username, date FROM users ORDER BY id ASC LIMIT {$start},{$per_page}"); // where to start and for how many 1-5 
     while ($row = mysql_fetch_array($query)): ?> 
      <div><h5><?php echo $row['username']; ?> (<?php echo $row['date']; ?>)</h5></div> 
      <?php 
     endwhile; 
    endif; 
?> 
+0

mais comment puis-je changer le numéro de la page sans l'URL – q7eb2a

0

Pagination dans PHP/MySQL est simplement atteint en utilisant la clause LIMIT.

Initialement, vous devez compter le nombre total d'enregistrements et le diviser par les enregistrements par page. Passez le numéro de page avec REQUEST.

Lisez le numéro de page du tableau REQUEST et recherchez l'enregistrement de début de la page.

Vous pouvez continuer à lire et à voir la mise en œuvre complète de la page suivante http://www.csnotes32.com/2014/11/page-wise-or-paginated-listing-of-data.html

1
class Pagination 
{ 
    public $cur_page; 
    public $total; 
    public $per_page; 

    function __construct($cur_page, $total, $per_page) 
    { 
     $this->cur_page = $cur_page; 
     $this->total = $total; 
     $this->per_page = $per_page; 
    } 

    function getTotalPage(){ 
     return ceil($this->total/$this->per_page); 
    } 

    function hasPrevPage(){ 
     if($this->cur_page > 1){ 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 

    function hasNextPage(){ 
     if($this->cur_page < $this->getTotalPage()){ 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 

    function offSet(){ 
     return ($this->cur_page - 1) * $this->per_page; 
    } 
} 

$total = 12; 
$per_page = 5; 
$cur_page = 1; 

$pagination = new Pagination($cur_page, $total, $per_page); 
$offSet = $pagination->offSet(); 
$query = "SELECT username, date FROM users ORDER BY id ASC LIMIT {$offset}, {$per_page}"; 
0

C'est le code pour la pagination. Utilisez avec votre base de données et vous obtiendrez Google style pagination:

<?php 

    $conn=mysqli_connect("localhost","root","","ui"); 


    $start=0; 
    $limit=5; 

     $t=mysqli_query($conn,"select * from form_table"); 
     $total=mysqli_num_rows($t); 



     if(isset($_GET['id'])) 
     { 
      $id=$_GET['id'] ; 
          $start=($id-1)*$limit; 

           } 
       else 
       { 
      $id=1; 
    } 
    $page=ceil($total/$limit); 

     $query=mysqli_query($conn,"select * from form_table limit          $start,$limit"); 
    ?> 
    <!DOCTYPE html> 
<html> 
<head> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet"  href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
    <script s  src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js">  </script> 
    <script     src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js">   </script> 
     </head>   
    <body> 

    <div class="container"> 
    <h2>Table</h2> 
     <table class="table table-bordered"> 
     <thead> 
      <tr> 
      <th>Id</th> 
      <th>Name</th> 
      <th>Gender</th> 


    <th>Hobbies</th> 
    <th>Course</th> 
    </tr> 
    </thead> 
    <tbody> 

<?php 
while($ft=mysqli_fetch_array($query)) 
{?> 
<tr> 
    <td><?= $ft['0']?></td> 
    <td><?= $ft['1']?></td> 
    <td><?= $ft['2']?></td> 
    <td><?= $ft['3']?></td> 
    <td><?= $ft['4']?></td> 
    </tr> 
<?php 
} 

?> 


</tbody> 
    </table> 
    <ul class="pagination"> 
<?php if($id > 1) {?> <li><a href="?id=<?php echo ($id-1) ?  >">Previous</a></li><?php }?> 
<?php 
for($i=1;$i <= $page;$i++){ 
?> 
    <li><a href="?id=<?php echo $i ?>"><?php echo $i;?></a></li> 
    <?php 
} 
    ?> 
<?php if($id!=$page) 
//3!=4 
{?>