分页的第二页显示所有结果

时间:2014-04-03 22:35:57

标签: php pagination

被困在这几个小时。 我有一个简单的(我认为)分页PHP代码在这里工作正常的第一页 - 这意味着我得到正确的页面显示数量和显示正确的结果。代码:

<?php
$query = $_POST ['query'];
$link=mysql_connect('localhost','root','root');
    mysql_select_db("asset_catalog",$link);
$q=("SELECT COUNT(*) \"total\" FROM assets WHERE Description LIKE '%$query%' OR Manufacturer LIKE '%$query%'");
$ros=mysql_query($q,$link) or die(mysqli_error());
$row=mysql_fetch_array($ros);
$total=$row['total'];
$dis=15;
$total_page=ceil($total/$dis);
$page_cur=(isset($_GET['page']))?$_GET['page']:1;
$k=($page_cur-1)*$dis;

$q=("SELECT * FROM assets WHERE Description LIKE '%$query%' OR Manufacturer LIKE '%$query%' limit $k,$dis");
$ros=mysql_query($q,$link);

    echo "<table border='0'>

        <tr>

        </tr>";
    while($row=mysql_fetch_array($ros))

        {
            if (($i % 5) == 0) echo "<tr>";
            echo "<td><img src='".$row['Image']."' id='queryimg'><br>
             <a href='details.php?ID=".$row['ID']."' style='color: #fff;'>{$row[Description]}</a></td>";
                if (($i % 5) == 4) echo "</tr>";
                $i++;
        }

        if ( $i > 0 && ($i-1) % 3 < 2) echo "</tr>";

        echo "</table>";

?>
<div style="position: absolute; left: 320px;">
<?php
if($page_cur>1)
{
    echo '<a href="pagination.php?page='.($page_cur-1).'" style="cursor:pointer;color:green;" ><input style="cursor:pointer;background-color:green;border:1px black solid;border-radius:5px;width:120px;height:30px;color:white;font-size:15px;font-weight:bold;" type="button" value=" Previous "></a>';
}
else
{
  echo '<input style="background-color:green;border:1px black solid;border-radius:5px;width:120px;height:30px;color:black;font-size:15px;font-weight:bold;" type="button" value=" Previous ">';
}
for($i=1;$i<$total_page;$i++)
{
    if($page_cur==$i)
    {
        echo ' <input style="background-color:green;border:2px black solid;border-radius:5px;width:30px;height:30px;color:black;font-size:15px;font-weight:bold;" type="button" value="'.$i.'"> ';
    }
    else
    {
    echo '<a href="pagination.php?page='.$i.'"> <input style="cursor:pointer;background-color:green;border:1px black solid;border-radius:5px;width:30px;height:30px;color:white;font-size:15px;font-weight:bold;" type="button" value="'.$i.'"> </a>';
    }
}
if($page_cur<$total_page)
{
    echo '<a href="pagination.php?page='.($page_cur+1).'"><input style="cursor:pointer;background-color:green;border:1px black solid;border-radius:5px;width:90px;height:30px;color:white;font-size:15px;font-weight:bold;" type="button" value=" Next "></a>';
}
else
{
 echo '<input style="background-color:green;border:1px black solid;border-radius:5px;width:90px;height:30px;color:black;font-size:15px;font-weight:bold;" type="button" value="   Next ">';
}?>

问题是,如果我点击第二页,它会在数据库中显示所有结果 - 而不是应该在第二页中的结果。另外,如果我最初说3页,一旦我转到第二页,它会告诉我有70页又名(所有数据库)

我确信有一个快速解决方案,但对于我的生活,我无法理解。 任何帮助,建议都会很棒。谢谢!

1 个答案:

答案 0 :(得分:0)

在页面之间丢失了$_POST['query']

而不是

$query = $_POST ['query'];

$query = (isset($_POST ['query']))?$_POST['query']:$_GET['query'];

或使用

$query = $_REQUEST['query'];

在您的分页链接中替换

'<a href="pagination.php?page='.($page_cur-1).'" style

'<a href="pagination.php?page='.($page_cur-1).'&query='.$query.'" style