【问题标题】:Paging in php displaying data over multiple pagesphp中的分页在多个页面上显示数据
【发布时间】:2012-04-25 14:03:11
【问题描述】:

您好,我正在尝试在页面上显示我的用户数据

这是我的代码:

//Run a query to select all the data from the users table
$perpage = 2;
$result = mysql_query("SELECT * FROM users LIMIT $perpage");

它确实每页仅显示两个,但我想知道您如何在底部获取链接到您的数据的页码

这是我更新的代码

 $result = mysql_query("SELECT * FROM users");  // Let's get the query    
 $nrResults=mysql_num_rows($result); // Count the results    
if (($nrResults%$limit)<>0) {       
 $pmax=floor($nrResults/$limit)+1;  // Divide to total result by the number of query 
// to display per page($limit) and create a Max page    
 } else {     
$pmax=floor($nrResults/$limit); 
}     
$result = mysql_query("SELECT * FROM users LIMIT 2 ".(($_GET["page"]-1)*$limit).", $limit");  
// generate query considering limit    
while($line = mysql_fetch_array( $result )) 
{   
?> 

错误

解析错误:语法错误,第 98 行 E:\xampp\htdocs\Admin.php 中出现意外 $end

【问题讨论】:

  • 您的意思是链接以便下一页将显示接下来的两个结果吗?或者您所说的“链接到您的数据”到底是什么意思?
  • 显示接下来的两个结果

标签: php mysql pagination paging


【解决方案1】:

为了做到这一点,您还需要在 SQL 语句中使用偏移值,所以它是

SELECT * FROM users LIMIT $offset, $perpage

例子:

SELECT * FROM tbl LIMIT 5,10;  # Retrieve rows 6-15

然后,要将链接放在页面底部,您需要计算总数据,将总数除以每页值,以计算出您将拥有多少页。

然后根据用户点击的页面设置你的偏移值。

希望有帮助!

更新:

意外结束很可能意味着您的代码中有一个额外的右括号 } 导致页面结束,并且后面还有更多代码。查看您的代码并匹配括号以解决该问题。您粘贴的代码示例中还有一些其他问题。

$result = mysql_query("SELECT * FROM users" ); //Note if you have a very large table you probably want to get the count instead of selecting all of the data... 
$nrResults = mysql_num_rows( $result ); 
if( $_GET['page'] ) {
  $page = $_GET['page']
} else {
  $page = 1;
}
$per_page = 2;
$offset = ($page - 1) * $per_page; //So that page 1 starts at 0, page 2 starts at 2 etc.
$result = mysql_query("SELECT * FROM users LIMIT $offset,$per_page");
while( $line = mysql_fetch_array( $result ) ) 
{
//Do whatever you want with each row in here
}

希望有帮助

然后您可以使用 nrResults 数字来计算您将拥有多少页...如果您有 10 条记录并且每页显示 2 条记录,那么您将有 5 页,因此您可以打印 5 个链接每个页面在 URL 中都有正确的页面 #...

【讨论】:

  • 第一个查询应该总是SELECT COUNT(*) FROM users。即使它不是“非常大”,将 整个表 读取到 PHP 中只是为了检索单个整数也是非常低效的!
【解决方案2】:

使用请求! http://php.net/manual/en/reserved.variables.request.php

if (((isset($_GET['page'])) AND (is_int($_GET['page']))) {
$perpage = $_GET['page'];
}
$result = mysql_query("SELECT * FROM users LIMIT $perpage");

...

链接http://yourwebsite.com/userlistforexample.php?page=3

http://yourwebsite.com/userlistforexample.php?somethingishere=21&page=3

【讨论】:

  • $perpage = (int) $_GET['page'];,请
  • 哦,是的!它还应该检查 $_GET['page'] 是否为整数!
  • error 解析错误:语法错误,第 12 行的 E:\xampp\htdocs\Admin.php 中出现意外的 '{'
  • 在另一个括号中插入 ((isset($_GET['page'])) AND (is_int($_GET['page'])) .. 像这样 (((isset($_GET[ 'page'])) AND (is_int($_GET['page']))) 也编辑了答案
  • 又一个错误解析错误:语法错误,第 12 行的 E:\xampp\htdocs\Admin.php 中出现意外的 T_VARIABLE
猜你喜欢
  • 2018-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多