【问题标题】:MySQL PHP Pagination - My search works but paginations does notMySQL PHP 分页 - 我的搜索有效,但分页无效
【发布时间】:2014-02-24 16:25:40
【问题描述】:

我搜索了大约 75 个帖子,但似乎没有一个适合我。

我的 search-form.php 中有一个搜索表单,允许用户搜索特定用户,结果显示在 search.php 中。来自作品和结果的显示没有问题,除了我设置了“10”的限制并且在初始页面上显示了 10 个,但是当单击下一页的分页按钮时,它不会显示剩余的结果。

任何帮助我指出正确的方向将不胜感激。这不是一个实时服务器,我正在使用它来学习 php 和 mysql,所以除了你的通用 php 之外,我对任何东西都是新手。

search-form.php代码:

<form action="getdata.php" method="get">
  <label>Name:
    <input type="text" name="keyname" />
  </label>
  <input type="submit" value="Search" />
</form>

getdata.php代码:

<?php
$searchTerm = trim($_GET['keyname']);

if($searchTerm == "")
{
  echo "Enter name you are searching for.";
  exit();
}

$dbhost = 'localhost';
$dbuser = 'xxxxx';
$dbpass = 'xxxxx';
$rec_limit = 10;

$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}

mysql_select_db('xxxxx_xxxxx');

$sql = "SELECT count(note_id) FROM notes ";
$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 * FROM notes WHERE emp_code LIKE '%$searchTerm%' 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 "<ul data-role='listview' data-inset='true'>" .
    "<li data-role='list-divider'>Friday, October 8, 2010 <span class='ui-li-count'>Note ID:&nbsp;{$row['note_id']}</span></li>" .
    "<li><a href='#'>" .
    "<p>Employee Code:&nbsp;{$row['emp_code']}</p>" .
    "<p>Note:&nbsp;{$row['emp_note']}</p>" .
    "</a></li></ul>"; 
  }

  if( $page > 0 )
  {
    $last = $page - 2;
    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=$last\">Last 10 Records</a> |";
    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=$page\">Next 10 Records</a>";
  }
  else if( $page == 0 )
  {
    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=$page\">Next 10 Records</a>";
  }
  else if( $left_rec < $rec_limit )
  {
    $last = $page - 2;
    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=$last\">Last 10 Records</a>";
  }

  mysql_close($conn);
  ?>

【问题讨论】:

  • $_GET{'page'} 语法不正确使用$_GET['page']

标签: php mysql pagination


【解决方案1】:

您的 GET 需要使用方括号,而不是大括号。 if( isset($_GET{'page'} ) ) 这是不正确的语法,不会起作用。

if( isset($_GET['page'] ) )
{
$page = $_GET['page'] + 1;

【讨论】:

  • 我按照建议更改了括号并重新运行了脚本,它仍然可以正常运行,除非单击下一步(有更多结果)它只显示“输入您要搜索的名称”。从我的脚本顶部。我是否让自己陷入某种循环?
  • 不确定这是否有助于故障排除,但我删除了 "$searchTerm = trim($_GET['keyname']); if($searchTerm == "") { echo "Enter name you are从脚本顶部搜索。"; exit(); }" 并且它没有分页,但它返回数据库表中的所有结果,而不仅仅是脚本中设置的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-04
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多