Jump to content

Pagination + first letter + per page


pecooou

Recommended Posts

Hi, I have pagination system with FIRST LETTER separated and everything is OK.

$page = (int)(!isset($_GET["page"]) ? 1 : $_GET["page"]);
if ($page <= 0) $page = 1;
 
$per_page = 5; 
 
$startpoint = ($page * $per_page) - $per_page;
 
$statement = "restaurants ORDER BY `name`"; 

// make foo the current db '" . addslashes($_GET['id']) . "'


$result = mysqli_query($mysqli,"SELECT name FROM restaurants WHERE cuisine_ID_obsolete=5 ORDER BY name LIMIT {$startpoint} , {$per_page}");

if (mysqli_num_rows($result) == 0) {
     
    echo "No records are found.";
 
} else {
     $lastFoundLetter = '';
    // displaying records.
    while ($row = mysqli_fetch_array($result)) {
      
      
      
      $firstLetter = substr($row['name'], 0, 1);
    if ($firstLetter != $lastFoundLetter) {
      
        if ($lastFoundLetter != '') {
          
            echo "</br>";
        }

echo strtoupper($firstLetter) . "<br/>"; 



        $lastFoundLetter = $firstLetter;
    }



echo $row['name'] . "<br/>"; 

  }
      }


echo pagination($statement,$per_page,$page);
?>


Function for pagination:

<?php

function pagination($query,$per_page=10,$page=1,$url='?'){  
    global $mysqli;
    $query = "SELECT COUNT(*) as `num` FROM restaurants  WHERE cuisine_id_OBSOLETE = '12'";
    $row = mysqli_fetch_array(mysqli_query($mysqli,$query));
    $total = $row['num'];
    $adjacents = "1";
     
    $prevlabel = "<img src='files/prev.png'>";
    $nextlabel = "<img src='files/next.png'>";
     
    $page = ($page == 0 ? 1 : $page); 
    $start = ($page - 1) * $per_page;                              
     
    $prev = $page - 1;                         
    $next = $page + 1;
     
    $lastpage = ceil($total/$per_page);
     
    $lpm1 = $lastpage - 1; // //last page minus 1
     
    $pagination = "";
    if($lastpage > 1){  
        $pagination .= "<ul class='pagination'>";
       
             
            if ($page > 1) $pagination.= "<li><a href='{$url}page={$prev}'>{$prevlabel}</a></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 > 1 + ($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}'>{$nextlabel}</a></li>";
         
        $pagination.= "</ul>";       
    }
     
    return $pagination;
}


?>

Problem is, since I have FIRST LETTER separated, with $per_page. How to exclude FIRST LETTER and "<br/>" from $per_page variable?

 

Link to comment
https://forums.phpfreaks.com/topic/291484-pagination-first-letter-per-page/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.