【问题标题】:pagination not working with where condition分页不适用于 where 条件
【发布时间】:2015-02-19 06:29:40
【问题描述】:

表名 - 新闻

我创建分页代码

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

它可以工作,但在 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;
    }

}
?>

【问题讨论】:

  • 向我们展示您为第 2,3,4..n 页生成链接的代码。
  • 先生,我将我的代码粘贴到回显页面...

标签: php mysql pagination


【解决方案1】:

试试这个:

if there are no page then 
let
page=1
limit=1
now startpoint=(1*1)-1=0 //correct

if you use 

page=2
then
SP=(2*1)-1=1 // one is start point and one is limit ?

i think its correct 

show me error message.. PLZ

【讨论】:

  • 错误未定义索引:城市和未定义索引:状态..我现在为什么会出现此错误...bcoz当我单击第2页时,where子句中的条件变为空白...。
  • 如果出现未定义索引不是编程错误,因为您没有在 url 中传递任何请求城市以忽略您可以使用 error_reporting(0);或使用 if(isset($_REQUEST['city'])){
【解决方案2】:
undefiend index are not a programming error
if comes because you not pass any request city in url
for ignore you can use error_reporting(0);

or use

if(isset($_REQUEST['city'])){
$city=$_REQUEST['city'];
}
else{
//....
//$city="default value";
}

if(isset($_REQUEST['state'])){
$state=$_REQUEST['state'];
}
else{
//default operation
}

【讨论】:

    【解决方案3】:

    你好吗?

    您必须将城市和州参数传递给分页功能。

    function pagination($query, $per_page = 10, $page = 1, $params = array()) {
        ...
        $params['page'] = $page; // or $counter or $nextPage, ...
        ...
        $url = http_build_query($params);
        $html = '<a href="' . $url . '">XXX</a>';
    }
    

    然后,你调用它传递 $_REQUEST(或者另一个变量,如果你从另一边生成参数);

    $Admin->pagination($statement,$limit, $page, $_REQUEST);
    

    问候。

    【讨论】:

      【解决方案4】:

      你有两个选择

      1. 你需要在你的分页方法中传递完整的 url(除了 $page 之外的所有参数)

        分页($statement,$limit,$page,'city.php?state=20&city=18'); ?>

      然后在你的分页方法中添加 $page 参数。根据您当前的参数确定是否使用“&”可能有点棘手。

      1. 您可以在分页方法中添加一个新参数来标识当前的 url 参数。然后,您可以使用它们生成完整的分页网址。

        函数分页($query, $per_page = 10,$page = 1, $url = '?', $parameters=array()){}

      并在调用方法时将当前url参数($city, $state)作为数组传递。

      【讨论】:

        【解决方案5】:
        in method pagination($statement,$limit,$page) 
        you pass only 3 variable but in method required constant 4 variable
        
        for optionaly variable use 
        
        example
        
        function($var=null,$var2=null){
        /*....your program....*/
        }
        now you can call
        function();
        function($arg1);
        function($arg1,$arg2);
        

        【讨论】:

          【解决方案6】:

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

          【讨论】:

          • 看看我的网址,我从导航栏传递了州和城市 id,根据州和城市 id,我需要在分页中显示页面。
          猜你喜欢
          • 2017-09-14
          • 2015-09-26
          • 1970-01-01
          • 2022-01-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-12
          • 1970-01-01
          相关资源
          最近更新 更多