PHP分页:Prev和Next按钮工作,但表格不会出现

时间:2017-02-17 03:02:23

标签: php paging

我正在关注互联网上使用ODBC进行PHP分页的一些示例,并根据我自己的用途进行更改。

我设法让NEXTPREVIOUS工作了。点击NEXTPREVIOUS时,网页的网址会发生变化。例如,当我点击NEXT时,这就是网址localhost/mypage.php?page=2

这里的问题是未能显示的数据表。

这是我的代码:

function inv_rows($r1)  
{
ob_start(); 
(int)$number = odbc_result_all($r1);
ob_clean(); 
return $number;
}

$page = isset($_GET["page"]) ? $_GET["page"] : 1;  

if(empty($page)){$page = 1; 
}           
$query = "SELECT UserId, UserNm FROM User"; 
$num_result = odbc_exec($db, $query);
$numrows = inv_rows($num_result);   

$limit = 10;
$offset = ($page - 1) * $limit;

$sql = odbc_exec($conn,"SELECT UserId, UserNm FROM User LIMIT $limit OFFSET $offset"); 


$result = odbc_exec($db, $sql);

echo "<table style='width: 600;'>";

while(odbc_fetch_row($result))
{
echo "<tr>
<td style='width: 300; height: 15px;>";
echo odbc_result_all($result, "UserId");
echo "</td>
<td style='width: 300; height: 15px;'>";
echo odbc_result_all($result, "UserNm");
echo "</td>
</tr>";
}

echo "</table>";
if($page !=1)
{
$pageprev = $page - 1;
echo "<a href='paging2.php?page=$pageprev' style='text-decoration: none'>&nbsp; PREVIOUS&nbsp;</a>";
}
else
{ 
echo "&nbsp; PREVIOUS &nbsp;"; 
}

if(($numrows - ($limit * $page)) > 0)
{
$pagenext = $page + 1;
echo "<a href='paging2.php?page=$pagenext' style='text-decoration: none'>NEXT</a>"; }
else
{ 
echo "&nbsp; NEXT &nbsp;"; 
}

odbc_free_result($result);            
exit;
?> 
我确定我错过了什么。请指导我。谢谢。

2 个答案:

答案 0 :(得分:0)

  1. while函数中的代码具有原始HTML,并为PHP代码打开<?php脚本标记。由于您已经处于PHP上下文中,因此应该采用相反的方式 - 无需打开和关闭<?php标记,并且需要使用PHP的echo命令打印HTML。
  2. <table>标记应位于while函数之外。你不想为每一行打印一张表。
  3. 更新

    1. $conn是否正确定义? $db是否已正确定义?
    2. $result实际上是否包含您感兴趣的行?
    3. 这应该为您的表打印标题行。如果未打印行数据,请检查查询结果。

      echo "<table style='width: 600;'>";
      echo "<thead><tr><th>User ID</th><th>User Name</th></tr></thead><tbody>";
      
      while(odbc_fetch_row($result))
      {
          echo "<tr><td style='width: 300; height: 15px';>".odbc_result($result, 'UserId')."</td><td style='width: 300; height: 15px;'>".odbc_result($result, 'UserNm')."</td></tr>";
      }
      
      echo "</tbody></table>";
      

答案 1 :(得分:0)

You must try and use the $offset variable in your query.

<?php
function inv_rows($r1)  
{
ob_start(); 
(int)$number = odbc_result_all($r1);
ob_clean(); 
return $number;
}

$page = isset($_GET["page"]) ? $_GET["page"] : 1;  

if(empty($page)){$page = 1; 
}           
$query = "SELECT UserId, UserNm FROM User"; 
$num_result = odbc_exec($db, $query);
$numrows = inv_rows($num_result);   

$limit = 10;
$offset = ($page - 1) * $limit;

$sql = "SELECT UserId, UserNm FROM User LIMIT 10 OFFSET $offset"; 


$result = odbc_exec($db, $sql);

echo "<table style='width: 600;'>";

while(odbc_fetch_row($result))
{
echo "<tr>
<td style='width: 300; height: 15px;>";
echo odbc_result_all($result, "UserId");
echo "</td>
<td style='width: 300; height: 15px;'>";
echo odbc_result_all($result, "UserNm");
echo "</td>
</tr>";
}

echo "</table>";
if($page !=1)
{
$pageprev = $page - 1;
echo "<a href='paging2.php?page=$pageprev' style='text-decoration: none'>&nbsp; PREVIOUS&nbsp;</a>";
}
else
{ 
echo "&nbsp; PREVIOUS &nbsp;"; 
}

if(($numrows - ($limit * $page)) > 0)
{
$pagenext = $page + 1;
echo "<a href='paging2.php?page=$pagenext' style='text-decoration: none'>NEXT</a>"; }
else
{ 
echo "&nbsp; NEXT &nbsp;"; 
}

odbc_free_result($result);            
exit;
?>