-3

Update to include full code.

I am pulling records from a database and then displaying them 5 per page like this:

$num_rec_per_page=5;

if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1;   }; 

$start_from = ($page-1) * $num_rec_per_page; 
$school = $_REQUEST['school'];
$sql = "SELECT * FROM `data` WHERE `school` LIKE '%$school%'";
$rs_result = mysql_query($sql);
$total_records = mysql_num_rows($rs_result);  //count number of records
$total_pages = ceil($total_records / $num_rec_per_page); 

for ($i=1; $i<=$total_pages; $i++) { 
        echo "<a href='search.php?school=".urlencode($school)."&page=".$i."'>".$i."</a>";
}; 

This gives me a long list like this for each page:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455

What I would like to do is something like:

<Prev 1 2 3 4....53 54 55 Next>
Tom Canfarotta
  • 743
  • 1
  • 5
  • 14

1 Answers1

1

Use LIMIT and OFFSET clauses in your SELECT query to implement pagination.

Here's the reference:

So your code should be like this:

$num_rec_per_page = 5;

if(isset($_GET["page"])){ 
    $page  = $_GET["page"]; 
}else{ 
    $page=1;  
} 

$offset = ($page - 1) * $num_rec_per_page; 
$school = $_GET['school'];
$sql = "SELECT * FROM `data` WHERE `school` LIKE '%" . $school. "%' LIMIT 5 OFFSET " . $offset;
$rs_result = mysql_query($sql);
$total_records = mysql_num_rows($rs_result);  //count number of records
$total_pages = ceil($total_records / $num_rec_per_page); 

for ($i=1; $i<=$total_pages; $i++){ 
    if($i != 1){
        $prev_page = $i - 1;
        echo "<a href='search.php?school=".urlencode($school)."&page=" . $prev_page ."'>&lt;prev</a>";
    }
    echo " <a href='search.php?school=".urlencode($school)."&page=".$i."'>".$i."</a>";
    if($i != $total_pages){
        $next_prev = $i + 1;
        echo " <a href='search.php?school=".urlencode($school)."&page=" . $next_page ."'>next&gt;</a>";
    }
} 

Sidenote: Don't use mysql_* functions, they are deprecated as of PHP 5.5 and are removed altogether in PHP 7.0. Use mysqli or pdo instead. And this is why you shouldn't use mysql_* functions.

Community
  • 1
  • 1
Rajdeep Paul
  • 16,887
  • 3
  • 18
  • 37