【问题标题】:pagination not working in php query分页在php查询中不起作用
【发布时间】:2013-10-09 13:48:41
【问题描述】:

嗨,我正在尝试为 mysql 查询创建分页,但它根本不起作用,有人可以告诉我我的错误在哪里吗?到目前为止,这是我的代码。

<?php     

$con=mysqli_connect("localhost","database","password","table");
// Check connection
if (mysqli_connect_errno())
{
    die("Failed to connect to MySQL: " . mysqli_connect_error());
}

if (!$result = mysqli_query($con,"SELECT * FROM table_name"))
{
    die("Error: " . mysqli_error($con));
}
$per_page =5;//define how many games for a page
$count = mysqli_num_rows($result);
$pages = ceil($count/$per_page);

   if(!isset($_GET['page']) || 
   $_GET['page']=="") {
      $page="1";
} else {
  $page=$_GET['page'];
}    $start    = ($page - 1) * $per_page;
    $result = mysqli_query($con,"SELECT * FROM cursos LIMIT $start,$per_page");

这是我列出我的 sql 查询结果的部分

?>

// show results from my sql query 

<?php

while($row = mysqli_fetch_array($result))
{   $id = $row['id'];
?>


// code for next page 

最后这是页面底部的分页链接

//Show page links
for ($i = 1; $i <= $pages; $i++)
{?>
  <li id="<?php echo $i;?>"><a href="cursos.php?c=<?php echo $c;?>&page=<?php echo $i;?>"><?php echo $i;?></a></li>
<?php  } ?>

在 Deepak 的建议下,我现在才得到 ​​p>

错误的最终代码//Show page 它会生成假链接 注意:未定义变量:c in D:\xampp\htdocs\cedecap\admin\cursos.php191
&page=1">1

而且代码//显示页面链接没有显示任何内容。正在工作的页面上的页面现在是 5 个

【问题讨论】:

  • 您能否解释一下您所说的不工作是什么意思?
  • if($_GET['page']==""){ $page="1";

标签: php mysqli pagination


【解决方案1】:

更改以下行

$result = $result." LIMIT $start,$per_page";

$result = mysqli_query($con,"SELECT * FROM table_name LIMIT $start,$per_page");

编辑

$query_count=mysqli_query($con, $result); 行中,您将mysql_query() 的结果再次传递给相同的函数。您可以跳过该行并执行以下操作:

//$query_count=mysqli_query($con, $result); this line is deleted

$per_page =5;//define how many games for a page
$count = mysqli_num_rows($result);
$pages = ceil($count/$per_page);

还要进行以下更改以消除index 错误:

if(!isset($_GET['page']) || $_GET['page']=="") {
  $page="1";
} else {
  $page=$_GET['page'];
}

对于未定义的变量$c 错误在设置$page 变量后添加以下代码:

if(!isset($_GET['c']) || $_GET['c']=="") {
  $c="some value";
} else {
  $c=$_GET['c'];
}

【讨论】:

  • 这些更改现在修复了所有问题,除了当我点击任何其他页面时的部分页面之外,它会让我1
  • 你在代码中哪里定义了变量$c,它的值是多少?
  • 我的代码中没有这样的变量,当我添加最后一个版本时它完全停止工作再次给我错误
  • 您在分页链接中传递了$c。但是你从来没有在任何地方定义过这样的变量。当您说&lt;?php echo $c;?&gt; 时,您希望PHP 回显什么?
  • 可能我应该删除它,因为我根本不需要它
【解决方案2】:

也许这行是错的:

$con=mysqli_connect("localhost","database","password","table");

应该是这样的:

$link = mysqli_connect("myhost","myuser","mypassw","mybd");

尝试:

$link = mysqli_connect("localhost","isuposseyouruserisroot","youdatabasepass","nameofyourdatabase") or die("Error " . mysqli_error($link));

【讨论】:

  • 通过该编辑,查询未列出任何内容,并且显示其他错误:警告:mysqli_error() 期望参数 1 为 mysqli,D:\xampp\htdocs\cedecap\admin\ 中给出的 null第 51 行的 cursos.php 错误:
  • 这是 mysqli_connect 的正确顺序:首先是您的主机,然后是用户、密码、数据库;)
【解决方案3】:

您似乎将“LIMIT $start, $per_page”附加到结果对象而不是基本 SQL 语句。尝试将您的查询分配给顶部的变量,然后像这样附加到该变量:

$sql = "SELECT * FROM table_name";
if (!$result = mysqli_query($con,$sql))
{
    die("Error: " . mysqli_error($con));
}

$query_count=mysqli_query($con,$result);

$per_page =5;//define how many games for a page
$count = mysqli_num_rows($query_count);
$pages = ceil($count/$per_page);

if($_GET['page']==""){
    $page="1";
}else{
    $page=$_GET['page'];
}
$start    = ($page - 1) * $per_page;
$result     = mysqli_query($con,$sql." LIMIT $start,$per_page");

【讨论】:

  • 进行了这些更改,他上面的其他人唯一认为更好的是现在显示 5 个结果,但显示了 3 个错误,并且没有显示分页页面。
【解决方案4】:

您使用的是 mysql_* 命令而不是 mysqli_*

您在几个地方使用它们:

$query_count=mysql_query($result);

$count = mysql_num_rows($query_count);

将这些转换为:

 $query_count=mysqli_query($con, $result);

 $count = mysqli_num_rows($query_count);

连同@deepak 在他的回答中指出的问题。

【讨论】:

    【解决方案5】:

    很多错误,首先

    mysql_num_rows($query_count);
    

    应该是

    mysqli_num_rows($query_count);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-14
      • 2020-12-10
      • 2018-11-25
      • 1970-01-01
      • 1970-01-01
      • 2014-04-24
      • 1970-01-01
      • 2016-08-10
      相关资源
      最近更新 更多