2013-10-01 3 views
0
public function paging($limit,$numRows,$page){ 

    $allPages  = ceil($numRows/$limit); 

    $start   = ($page - 1) * $limit; 

    $querystring = ""; 

    foreach ($_GET as $key => $value) { 
     if ($key != "page") $paginHTML .= "$key=$value&"; 
    } 

    $paginHTML = ""; 

    $paginHTML .= "Pages: "; 

    for ($i = 1; $i <= $allPages; $i++) { 
     $paginHTML .= "<a " . ($i == $page ? "class=\"selected\" " : ""); 
     $paginHTML .= "href=\"?{$querystring}page=$i"; 
     $paginHTML .= "\">$i</a> "; 
    } 

    return $paginHTML; 

} 

Это моя функция разбиения на страницы для реализации шаблона MVC. Но эта функция не отображает следующие и предыдущие ссылки.Функция разбивки на страницы PHP

Мне нужно вернуть переменную HTML для разбивки на страницы с предыдущей и следующей ссылкой на контроллер.

Я передал эту переменную этой функции с контроллера.

$limit,$numRows,$page 

Как я могу получить следующую и предыдущую ссылку на вышеуказанную функцию.

+0

Не по этой теме но вы должны настроить код как '$ start = ($ page-1) * $ limit + 1;' – silentboy

ответ

0

Я добавил некоторые условия в петлю.

Упование они работают.

Попробуйте следующее:

<?php 
public function paging($limit,$numRows,$page){ 

    $allPages  = ceil($numRows/$limit); 

    $start   = ($page - 1) * $limit; 

    $querystring = ""; 

    foreach ($_GET as $key => $value) { 
     if ($key != "page") $paginHTML .= "$key=$value&amp;"; 
    } 

    $paginHTML = ""; 

    $paginHTML .= "Pages: "; 

    for ($i = 1; $i <= $allPages; $i++) { 
     if ($i>1) { 
        $prev = $i-1; 
        $paginHTML .= '<a href="?'.$querystring.'page='.$prev'">Previous</a>'; 
       } 
       $paginHTML .= "<a " . ($i == $page ? "class=\"selected\" " : ""); 
     $paginHTML .= "href=\"?{$querystring}page=$i"; 
     $paginHTML .= "\">$i</a> "; 
       if ($i<$allPages) { 
        $next = $i+1; 
        $paginHTML .= '<a href="?'.$querystring.'page='.$next'">Next</a>'; 
       } 
    } 

    return $paginHTML; 

} 
?> 
0

Я использую этот класс постраничной как ниже внутри моего контроллера случае '':

$page = isset ($_REQUEST ['page']) ? $_REQUEST ['page'] : 1; 

    $limit   = 5; 

    $allStudent  = $student->getAllStudents(); 

    $numRows  = count($allStudent); 

    $start   = ($page - 1) * $limit; 

    $students  = $student->getStudentsWithLimit($start,$limit); 

    $paginHTML  = $pagin->paging($limit,$numRows,$page); 


    $view->render('view/allStudent.php', array('allStudent' => $students,'pagin' => $paginHTML)); 

    break; 

Получить функцию записи в классе модели

public function getStudentsWithLimit($start,$limit){ 

    $stmt  = $this->db->con->query("SELECT * FROM student LIMIT $start, $limit"); 
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC); 

    return $results; 

} 
0

Эта страница должна содержать следующую и предыдущую ссылку с максимальным значением 5 на eithe r на текущей странице.

Передайте функцию, если вы хотите, чтобы ссылка была отформатирована по-разному.

Я только дал это очень ограниченное тестирование, и его вытащили из класса, так что вы могли бы заменить некоторые жестко закодированные значения здесь с параметрами ссылки на $ это

 function get_paging_links($result_count, callable $format_function=null) 
    { 
     if(!$format_function){ 
      $format_function = function($url,$page,$qs){ 
       $qs['page'] = $page; 
       return $url.'?'.http_build_query($qs); 
      }; 
     } 

     $per_page = 5; 
     $total_pages = ceil($result_count/$per_page); 
     $return = []; 


     parse_str($_SERVER['QUERY_STRING'],$qs); 

     $url = $_SERVER['REQUEST_URI']; 

     //Remove existing query_string. 
     if($pos = strpos($url,'?')){ 
      $url = substr($url,0,$pos); 
     } 

     $current_page = isset($qs['page']) ? $qs['page'] : 1; 

     $previous = $current_page -1; 

     if ($previous) { 
      $return['previous'] = $format_function($url,$previous,$qs); 
     } 

     for($i = max(1,$current_page-5); $i <= min($total_pages,$current_page+5); $i++) { 
      $return["$i"] = $format_function($url,$i,$qs); 
     } 

     $next_page = $current_page + 1; 

     if ($next_page < $total_pages){ 
      $return['next'] = $format_function($url,$next_page,$qs); 
     } 

     return $return; 
    } 
Смежные вопросы