如何通过分页从我的mysql数据库表中每页只显示5条记录?

时间:2017-03-24 12:26:56

标签: php html mysql pagination

我希望通过分页显示每页五条记录(mysql,php,html,css),直到显示所有记录,导航到页面必须像 页面:1 2 3 4 5 6 7 7 8 ...最后

这是我的代码,可以查看emp_master表中的所有记录。 我是PHP的新手,所以请写一个易于理解的分页代码。我见过几个例子,但它们没有用。

<?php
$con=mysqli_connect("localhost","user","password","dataplus");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con,"SELECT * FROM emp_master");

echo "<table border='1'>";

$i = 0;
while($row = $result->fetch_assoc())
{
if ($i == 0) {
  $i++;
  echo "<tr>";
  foreach ($row as $key => $value) {
    echo "<th>" . $key . "</th>";
  }
  echo "</tr>";
 }
 echo "<tr>";
 foreach ($row as $value) {
  echo "<td>" . $value . "</td>";
 }
 echo "</tr>";
 }
 echo "</table>";

  mysqli_close($con);

我希望通过分页显示每页五条记录,直到显示所有记录,导航到页面必须如下,页面:1 2 3 4 5 6 7 7 8 ...最后。

以下代码无效:

     $dbhost="localhost";
     $dbuser="10053"; 
     $dbpass="n6867242"; 
 $database="0368";

     $rec_limit = 10;
     $conn = mysql_connect($dbhost, $dbuser, $dbpass);

     if(! $conn ) {
        die('Could not connect: ' . mysql_error());
     }
     mysql_select_db('1005368');

     /* Get total number of records */
     $sql = "SELECT count(emp_id) FROM emp_master ";
     $retval = mysql_query( $sql, $conn );

     if(! $retval ) {
        die('Could not get data: ' . mysql_error());
     }
     $row = mysql_fetch_array($retval, MYSQL_NUM );
     $rec_count = $row[0];

     if( isset($_GET{'page'} ) ) {
        $page = $_GET{'page'} + 1;
        $offset = $rec_limit * $page ;
     }else {
        $page = 0;
        $offset = 0;
     }

     $left_rec = $rec_count - ($page * $rec_limit);
     $sql = "SELECT emp_id, emp_name, e_mail ". 
        "FROM emp_master ".
        "LIMIT $offset, $rec_limit";

     $retval = mysql_query( $sql, $conn );

     if(! $retval ) {
        die('Could not get data: ' . mysql_error());
     }

     while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
        echo "EMP ID :{$row['emp_id']}  <br> ".
           "EMP NAME : {$row['emp_name']} <br> ".
           "EMP MAIL : {$row['e_mail']} <br> ".
           "--------------------------------<br>";
     }

     if( $page > 0 ) {
        $last = $page - 2;
        echo "<a href = \"$_PHP_SELF?page = $last\">Last 10 Records</a> |";
        echo "<a href = \"$_PHP_SELF?page = $page\">Next 10 Records</a>";
     }else if( $page == 0 ) {
        echo "<a href = \"$_PHP_SELF?page = $page\">Next 10 Records</a>";
     }else if( $left_rec < $rec_limit ) {
        $last = $page - 2;
        echo "<a href = \"$_PHP_SELF?page = $last\">Last 10 Records</a>";
     }

     mysql_close($conn);

6 个答案:

答案 0 :(得分:0)

您可以使用名为dataTables的库自动对数据进行分页,您可以根据自己的需要轻松自定义它,以及每页显示的记录数。它还有一个搜索字段,使用户无需任何额外代码即可搜索您的数据。

您所要做的就是包含几个cdn和以下代码,一切正常

$(document).ready(function(){
    $('#myTable').DataTable();
});

一些例子here

答案 1 :(得分:0)

如果您只想要PHP MySQL代码,我通常会使用以下内容。

$page=max(intval($_GET['page']),1); // assuming there is a parameter 'page'
$itemsperpage = 5;
$total=100; // total results if you know it already otherwise use another query
$totalpages = max(ceil($total/$itemsperpage),1);
$query = "SELECT * FROM emp_master LIMIT ".(($page-1)*$itemsperpage).",".$itemsperpage; // this will return 5 items based on the page

答案 2 :(得分:0)

您应该删除href中的空格,并在页面为0时生成$page = $page + 1

if( $page > 0 ) {
    $last = $page - 2;
    echo "<a href = \"$_PHP_SELF?page=$last\">Last 10 Records</a> |";
    echo "<a href = \"$_PHP_SELF?page=$page\">Next 10 Records</a>";
 }else if( $page == 0 ) {
    $page = $page + 1;
    echo "<a href = \"$_PHP_SELF?page=$page\">Next 10 Records</a>";
 }else if( $left_rec < $rec_limit ) {
    $last = $page - 2;
    echo "<a href = \"$_PHP_SELF?page=$last\">Last 10 Records</a>";
 }

答案 3 :(得分:0)

Link is here for demo, click here to experience the result

以下是为我工作的代码,只需更改您的数据库名称,用户名和密码即可 并完成分页。您可以将$ rec_limit值更改为您想要的no。每页的记录数。

<?php 
  $host="localhost";
  $username="68"; 
  $password="67242"; 
  $database="68";

   $rec_limit = 5;
    $conn = mysql_connect($localhost,$username,$password);

    if(! $conn ) {
    die('Could not connect: ' . mysql_error());
 }
 mysql_select_db('10');

 /* Get total number of records */
 $sql = "SELECT count(emp_id) FROM emp_master ";
 $retval = mysql_query( $sql, $conn );

 if(! $retval ) {
    die('Could not get data: ' . mysql_error());
 }
 $row = mysql_fetch_array($retval, MYSQL_NUM );
 $rec_count = $row[0];

 if( isset($_GET{'page'} ) ) {
    $page = $_GET{'page'} + 1;
    $offset = $rec_limit * $page ;
 }else {
    $page = 0;
    $offset = 0;
 }

 $left_rec = $rec_count - ($page * $rec_limit);
 $sql = "SELECT eid,ename, email, quali, gender, contactno, birthdate, joiningdate,CURDATE(), TIMESTAMPDIFF( YEAR, birthdate, CURDATE( ) ) AS age ". 
    "FROM emp_master ".
    "LIMIT $offset, $rec_limit";

 $retval = mysql_query( $sql, $conn );

 if(! $retval ) {
    die('Could not get data: ' . mysql_error());
 }


  echo "<table border='1'>";
  $i = 0;
  while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {

   if ($i == 0) {
        $i++;
        echo "<tr>";
        foreach ($row as $key => $value) {
          echo "<th>" . $key . "</th>";
        }
        echo "</tr>";
        }
        echo "<tr>";
        foreach ($row as $value) {
        echo "<td>" . $value . "</td>";
       }
      echo "</tr>";

     }
    echo "</table>";

if( $page > 0 ) {
$last = $page - 2;
echo "<a href = \"$_PHP_SELF?page=$last\">Last 5 Records</a> | ";
echo "<a href = \"$_PHP_SELF?page=$page\">Next 5 Records</a>";

}else if( $page == 0 ) {
$page = $page + 0;
echo "<a href = \"$_PHP_SELF?page=$page\">Next 5 Records</a>";

}else if( $left_rec < $rec_limit ) {

$last = $page - 2;
echo "<a href = \"$_PHP_SELF?page=$last\">Last 5 Records</a>";

}

     mysql_close($conn);
php?>

答案 4 :(得分:0)

如果您使用的是mysqli,则代码低于

 $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)

   {?> 

答案 5 :(得分:0)

i Give you an example of my project of pagination. Just you have to put your values in the code

$sql="SELECT * FROM tblname  LIMIT  $next,5";
$results = mysqli_query($conn,$sql);
    }
        else if (isset($_POST['prev']))
        {
            $prev1=$_POST['prev'];
            $next=$_POST['prev'];
            $prev=$prev1;
            $sql="SELECT * FROM tablename  LIMIT  $prev,5";
            $prev=$prev1;
            $results = mysqli_query($conn,"SELECT * FROM tablename LIMIT  $prev,10");   
                if($prev==0)
                {
                    $prev = 0;
                }
                else
                {
                    $prev=$next-10;   
                }
        }
        else
        {
            $next=0;
            $prev=0;
            $results = mysqli_query($conn,"SELECT * FROM tablename LIMIT  $next,10");
        }