php中的分页与url中的哈希

时间:2014-07-15 10:09:18

标签: php mysql hash pagination

我已经使用php和mysql在我的应用程序中开发了一个分页代码。通过带有问号的查询字符串中传递页码,但我想用哈希而不是问号传递页码参数。以下是我带有问号的代码,请帮我传递页码参数,并在网址中添加井号问号。帮助人。

<html>
<head>
<title>Paging Using PHP</title>
</head>
<body>
<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$rec_limit = 10;

$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
mysql_select_db('dbname');
/* Get total number of records */
$sql = "SELECT count(*) FROM tablename";
$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 col1,col2,col3 FROM tablename 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['col1']}  <br> ".
         "EMP NAME : {$row['col2']} <br> ".
         "EMP SALARY : {$row['col3']} <br> ".
         "--------------------------------<br>";
} 

if( $page > 0 )
{
   $last = $page - 2;
   echo "<a href=\"pagination2.php?page=$last\">Last 10 Records</a> |";
   echo "<a href=\"pagination2.php?page=$page\">Next 10 Records</a>";
}
else if( $page == 0 )
{
   echo "<a href=\"pagination2.php?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);
?>

请帮我传递带有哈希参数的页码参数

2 个答案:

答案 0 :(得分:0)

从散列开始的任何内容都不会被发送到服务器。如果您必须使用哈希,则需要使用Sammy.js之类的内容在客户端实现分页。

作为第二个选项,如果您按照建议in this question向服务器发出post请求,则可以将哈希后的部分放在隐藏字段中。

最后,一个设置导航的好方法是使用/(正斜杠)而不是像Joomla这样的一些CMS中使用的哈希。基本上,如果您请求somewebsite.com/index.php/MyPaginationParameter,它仍会转到somewebsite.com/index.php,您可以从请求网址中删除MyPaginationParameter部分。

答案 1 :(得分:0)

不通过代码或编写代码,而是向您解释算法。

设置每页应显示的查询数量,以每页25个查询为例。

QueriesPerPage=25;
pageSelected=USER_INPUT;  //if (NO USER_INPUT) pageSelected = 1

So switch(pageSelected)
case 1 //FIRST PAGE
show (0 , QueriesPerPage);

default: //ANY PAGE OTHER THAN 1st
show (QueriesPerPage*(pageSelected-1) , QueriesPerPage*pageSelected);


FuncTIOn show (START,END)
{
SELECT * FROM THIS LIMIT START,END;
}

如果您应用此算法,它将生成一个有效的脚本。 希望这会对你有所帮助。