2014-12-20 2 views
1
название

стола - новостипагинация не работает с тем, где условием

создать PAGINATION кода

здесь я передаю город и штат из панели навигации. И на основании этого я попытался показать строку с страницами разбивки на страницы.

Это работает, но на 2,3,4,5 ... N страницах отображается ошибка.

Простая разбивка на страницы Не получение данных с условием. PLZ предложить правильное решение.

при загрузке страницы он получает URL как

локальный/Hindi/city.php? Состояние = 19 & город = 16

и отображение строк разбиения на страницы ниже.

Но когда я нажимаю на page2 это показать URL как

локальный/Hindi/city.php? Страница = 2

и показывает

ошибка

Неопределенный индекс: город

Undefined индекс: состояние

навигации код

<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; 
    } 

} 
?> 
+0

Показать код, в котором вы работаете для ссылки на страницу 2,3,4 .. n. –

+0

сэр, я вставляю свой код в эхо-страницы ... –

ответ

0

У вас есть два варианта

  1. Вам необходимо пройти полный URL (со всеми параметрами, кроме $ страницы) в вашем методе PAGINATION

    постраничной ($ утверждение, $ предел, $ страницы '? city.php состояние = 20 & город = 18'); ?>

Затем добавьте параметр $ page в свой метод разбивки на страницы. Было бы немного сложно определить, следует ли использовать «&» или нет на основе вашего текущего параметра.

  1. Вы можете добавить новый параметр в свой метод разбивки на страницы, чтобы идентифицировать текущие параметры URL. Затем вы можете использовать их для генерации полных URL-адресов для разбивки на страницы.

    функцией разбиения на страницы ($ запроса, $ per_page = 10, $ стр = 1, $ URL = '?', $ Параметры = массив()) {}

и передать текущие параметры URL ($ city, $ state) как массив при вызове метода.

1

В URL localhost/hindi/city.php?page=2 нет city переменная так $_REQUEST['city'] не определяют.
Это то же самое для переменной state.

+0

Посмотрите на мой url, и я передал состояние и идентификатор города с панели навигации и на основе состояния и города id мне нужно отображать страницы в разбивке на страницы. –

0

Попробуйте это:

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 
+0

error Undefined index: city и Undefined index: state .. i теперь, почему эта ошибка возникает ... bcoz, когда я нажимаю на странице2, условие в том, что предложение пустое .... –

+0

undefiend index - это не ошибка программирования , если приходит потому что вы не передаете какой-либо запрос города в url для игнорирования вы можете использовать error_reporting (0); или использовать if (isset ($ _ REQUEST ['city'])) { –

0
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); 
0

как вы?

Вам необходимо передать параметры города и государства в функцию разбиения на страницы.

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); 

С уважением.

0
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 
}