php - 分页不适用于 where 条件

标签 php mysql pagination

表名-新闻

我创建分页代码

我在这里从导航栏中经过城市和州。 在此基础上,我尝试用分页页面显示行。

它有效,但在 2、3、4、5...N 页上显示错误。

只是分页而不是用 where 条件获取数据。 请提出适当的解决方案。

当页面加载时,它会得到类似的 url

localhost/hindi/city.php?state=19&city=16

并在下方显示分页行。

但是当我点击 page2 时它显示的 url 就像

localhost/hindi/city.php?page=2

和显示

错误

未定义索引:城市

未定义索引:状态

导航代码

<li><a href='city.php?state=20&city=18'>Bhopal</a></li>
  <li><a href='city.php?state=20&city=19'>Indore</a></li>

和其他带有分页代码的php代码

<?php 
require_once('includes/config.php');
$Admin = new admins;
$baseString = "detail.php";
$cit = $_REQUEST['city'];
$sta = $_REQUEST['state'];
?>

<?php           
$page = (int) (!isset($_GET["page"]) ? 1 : $_GET["page"]);
$limit = 1;
$startpoint = ($page * $limit) - $limit;
$statement = "news";
?>
<?php
mysql_set_charset('utf8');
$sql="select id,story,headline,photo from {$statement} where state_id = '$sta' and city_id = '$cit' order by id desc LIMIT {$startpoint} , {$limit}";
$query=mysql_query($sql);
?>

//显示页面的代码

<?php echo $Admin->pagination($statement,$limit,$page); ?>

分页功能

function pagination($query, $per_page = 10,$page = 1, $url = '?')
        {        
        $query = "SELECT COUNT(*) as `num` FROM {$query}";
        //print_r($query);
        //exit;
        $row = mysql_fetch_array(mysql_query($query));
        $total = $row['num'];
        $adjacents = "2"; 

        $page = ($page == 0 ? 1 : $page);  
        $start = ($page - 1) * $per_page;                               

        $prev = $page - 1;                          
        $next = $page + 1;
        $lastpage = ceil($total/$per_page);
        $lpm1 = $lastpage - 1;

        $pagination = "";
        if($lastpage > 1)
        {   
            $pagination .= "<ul class='pagination'>";
                    $pagination .= "<li class='details'>Page $page of $lastpage</li>";
            if ($lastpage < 7 + ($adjacents * 2))
            {   
                for ($counter = 1; $counter <= $lastpage; $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "<li><a class='current'>$counter</a></li>";
                    else
                        $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";                    
                }
            }
            elseif($lastpage > 5 + ($adjacents * 2))
            {
                if($page < 1 + ($adjacents * 2))        
                {
                    for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
                    {
                        if ($counter == $page)
                            $pagination.= "<li><a class='current'>$counter</a></li>";
                        else
                            $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";                    
                    }
                    $pagination.= "<li class='dot'>...</li>";
                    $pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>";
                    $pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>";      
                }
                elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
                {
                    $pagination.= "<li><a href='{$url}page=1'>1</a></li>";
                    $pagination.= "<li><a href='{$url}page=2'>2</a></li>";
                    $pagination.= "<li class='dot'>...</li>";
                    for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
                    {
                        if ($counter == $page)
                            $pagination.= "<li><a class='current'>$counter</a></li>";
                        else
                            $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";                    
                    }
                    $pagination.= "<li class='dot'>..</li>";
                    $pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>";
                    $pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>";      
                }
                else
                {
                    $pagination.= "<li><a href='{$url}page=1'>1</a></li>";
                    $pagination.= "<li><a href='{$url}page=2'>2</a></li>";
                    $pagination.= "<li class='dot'>..</li>";
                    for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
                    {
                        if ($counter == $page)
                            $pagination.= "<li><a class='current'>$counter</a></li>";
                        else
                            $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";                    
                    }
                }
            }

            if ($page < $counter - 1){ 
                $pagination.= "<li><a href='{$url}page=$next'>Next</a></li>";
                $pagination.= "<li><a href='{$url}page=$lastpage'>Last</a></li>";
            }else{
                $pagination.= "<li><a class='current'>Next</a></li>";
                $pagination.= "<li><a class='current'>Last</a></li>";
            }
            $pagination.= "</ul>\n";        
        }


        return $pagination;
    }

}
?>

最佳答案

在 url localhost/hindi/city.php?page=2 中没有 city 变量所以 $_REQUEST['city']未定义。
state 变量也是一样。

关于php - 分页不适用于 where 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27580975/

相关文章:

php - Array_walk 遍历 10000 个项目。可以优化吗?

php json多维数组语法

mysql - VueJS 中的数组循环所有空值函数

mysql - 如何将文本文件中的数据导入特定的 MySQL 列?

python - Beautifulsoup 使用下一个按钮分页

javascript - 使用无限滚动和 WP 进行触摸导航

php - 文件包含从 Linux 到 Windows

php - 使用 Zend_Search_Lucene 搜索数字

mysql - 提前加入 Laravel 5

codeigniter - 如何在没有配置的情况下设置分页链接的样式 - codeigniter