Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak dodać paginację w php

Musisz najpierw policzyć liczbę wierszy w bieżącym zapytaniu:

$numrows = $s->rowCount();

i musisz umieścić vaiable dla wyników na stronę, powiedz $resultsPerPage:

$resultsPerPage=10;

Następnie strona, na której aktualnie się znajdujesz:

$offset=$_REQUEST['offset'];

Następnie musisz uruchomić poniższy kod:

    $limit=$resultsPerPage;
    $PHP_SELF=$_SERVER['PHP_SELF'];
    if($numrows >= 1) { 
           // determine if offset has been passed to script, or if offset has been tampered with.
            if (empty($offset) || ($offset < 0) || ($offset > $numrows)) {
                $offset=0;
            }
            // Determine if a "PREV" link is necessary - if so, add it to the links array
            if (($offset > 0) && ($offset <= $numrows)) { 
                $prevoffset = $offset - $limit;
                $link_array[] = "<a href=\"$PHP_SELF?offset=$prevoffset" . $addOn . "\">Prev</a> &nbsp; \n";
            }

            // Determine the total number of pages needing links
            $pages=intval($numrows/$limit);
            // $pages variable now contains integer number of pages needed, unless there is a remainder from division
            if ($numrows % $limit) {
                // There is a remainder, so add one page
                $pages++;
            }
        /*
            for ($i=1; $i<=$pages; $i++) { // loop thru
                $newoffset=$limit*($i-1);
                if ((intval($offset/$limit)) == (intval($i-1))) 
                {   $link_array[] = "[$i] &nbsp; \n"; }
                else {  
                    $link_array[] = "<a href=\"$PHP_SELF?offset=$newoffset" . $addOn . "\">$i</a> &nbsp; \n"; 
                }
            }
            */

        $start_page=intval($offset/$limit)-4;
        $end_page=intval($offset/$limit)+5;

        if($start_page<=0){
        $start_page=1;  

        }

        if($start_page<2){
        $end_page=10;  

        }

        if($end_page>$pages){
          $end_page=$pages;
        }



            for ($i=$start_page; $i<=$end_page; $i++) { // loop thru
                $newoffset=$limit*($i-1);

            if ((intval($offset/$limit)) == (intval($i-1))) 
                {   $link_array[] = "[$i] &nbsp; \n"; }
                else {  
                $link_array[] = "<a href=\"$PHP_SELF?offset=$newoffset" . $addOn . "\">$i</a> &nbsp; \n"; 
                }
            }

            // Determine if this is the last page.
            if (!(($offset/$limit)==$pages) && $pages!=1) {
                $newoffset=$offset+$limit;
                // if not last page give NEXT link
                if((($numrows - $offset) > $limit) && ($pages !=1) && ($offset < $numrows)){
                    $link_array[] = "<a href=\"$PHP_SELF?offset=$newoffset" . $addOn . "\">Next</a><br>\n";
                }
            }
        }else{
            ; // redirect to error page
        }

if ($resultsPerPage > 0  && count($link_array) > 1)
{   echo "Page: ";
    array_walk($link_array, 'printArray'); 
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tablica partycji MySQL 5.5 według A-Z

  2. GDZIE dataczas starszy niż jakiś czas (np. 15 minut)

  3. wymiana partii na dla CodeIgniter Active Record

  4. Czy mogę użyć podzapytania w instrukcji INSERT?

  5. Indeks MySQL dla grupowania według / zamawiania według