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

标签 php html mysql pagination

我想通过分页显示每页五条记录(mysql、php、html、css),直到显示所有记录,导航到页面必须像,Page : 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);

我想通过分页每页显示 5 条记录,直到显示所有记录,导航到页面必须是这样的,Page: 1 2 3 4 5 6 7 7 8... Last.

以下代码无效:

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

最佳答案

如果你只需要 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

关于php - 如何通过分页从我的 mysql 数据库表中每页只显示 5 条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42999475/

相关文章:

php - 无法从 mysql 数据库获取英语和希腊语的短语

javascript - 将值重新分配给变量

javascript - 带有 forEach 函数的 querySelectorAll 不适用于旋转木马幻灯片上的切换按钮

c++ - 从远程 MySQL 服务器本地导出 .csv 数据

javascript - 如何追加表中的值

php - INSERT ON DUPLICATE KEY UPDATE 多行,检查每行的重复项

php - 如何显示来自 mysql blob 的图像

javascript - 使用 Jquery 防止在 html() 期间创建 html 标签

javascript - 如何通过 jquery 隐藏代码为 "."例如 1.1、1.2 的数据表行?

php - MYSQL查询双JOIN