Multiple pages for an SQL query, not working

This is my current code that I am trying to use, the page has links to get to the next page and previous page which should change which rows from the SQL table are displayed but for some reason the different rows are not displayed past “page” 1. Thanks for the help in advance :slight_smile:

[php]<?php

include “connections/database.php”;

$page = $_GET[‘page’];
if ($_GET[‘page’])

{
if ($page == “1”){ $start=“0”; $end=“6”;}
elseif ($page == “2”){ $start=“7”; $end=“6”;}
elseif ($page == “3”){ $start=“14”; $end=“6”;}
elseif ($page == “4”){ $start=“20”; $end=“6”;}
elseif ($page == “5”){ $start=“27”; $end=“6”;}
elseif ($page == “6”){ $start=“34”; $end=“6”;}
elseif ($page == “7”){ $start=“41”; $end=“6”;}
elseif ($page == “8”){ $start=“48”; $end=“6”;}
elseif ($page == “9”){ $start=“55”; $end=“6”;}
elseif ($page == “10”){ $start=“62”; $end=“7”;}
$nextpage = $page + 1;
$backpage = $page - 1;
$sql2=“SELECT * FROM portfolio WHERE type=‘FirstSet’ ORDER BY packid ASC LIMIT $start,$end”;

}else{
$sql2=“SELECT * FROM portfolio WHERE type=‘FirstSet’ ORDER BY packid ASC LIMIT 0,6”;
$page ==“1”;
$nextpage = 2;
}

$result2=mysql_query($sql2);
while($rows=mysql_fetch_array($result2)){

?>

'>' border='0' width='700' height='150'>
<? } ?>[/php]

Hi, by the looks of it your looking for pagnation, i will paste the code below that i use for this.

This will replace all the if/elseif’s you have.

[php]
$max = 10; // SET THIS TO THE NUMBER OF RESULTS PER PAGE

if(!isset($_GET[‘page’])){$page = 1;}else{$page = (int)$_GET[‘page’];}
$start = ($page -1) * $max;
$q = mysql_query(“PUT YOUR QUERY IN HERE”);
$res1 = mysql_num_rows($q);
$pages = ceil($res1 / $max);// divide the amount of reults by the max amount of reults allowed and then round up using ceil

// query to get the results ready to output
$query1 = mysql_query(“PUT YOUR QUERY HERE(leave the LIMIT start, max part) LIMIT $start , $max”);
$result = mysql_num_rows($query1);
// below here you can display the results based on then results $result
[/php]

This part display the next and previous buttons and displays it like this. previous page 1 of 50 next, this can easily be changed. The previous button will not show on page 1 and next wont show on the last page.

[php]
if($page != 1 )
{
$previous = $page -1; echo 'Previous '. " ";
}

// this displays the page numbers
echo ‘Page ‘.$page.’ of ‘.$pages.’’; // this displays the amount of pages e.g. 1 of 50

// show the next button if the user isnt on the last page
if($page != $pages)
{
$next = $page +1; echo ’ Next’. " ";
}
[/php]

I have an old class that makes pagination very simple.

[php]

<?php class Pagination { var $page_number; var $page_var; var $pages_results; var $pages_links; var $total_pages; var $results; function __construct() { $this->page_var = "p"; $this->pages_results = 20; $this->pages_links = 99999; $this->page_number = null; $this->total_pages = 1; $this->results = array(); } function pagesInfo() { $this->total_pages = $this->get_total_pages(); $this->page_number = ($this->page_number === null ? $this->get_page_number() : $this->page_number); $pagesArray = array( "Previous_Page" => $this->get_prev_page(), "Next_Page" => $this->get_next_page(), "Current_Page" => $this->page_number, "Total_Pages" => $this->total_pages, "Page_Numbers" => $this->get_page_numbers(), "Db_Offset" => $this->get_db_offset(), "Start_Offset" => $this->get_start_offset(), "End_Offset" => $this->get_end_offset(), "Page_Results" => $this->pages_results, "Total_Results" => $this->results, "Page_Variable" => $this->page_var ); return $pagesArray; } function setResults($argResults) { $this->results = $argResults; } function setPageLinks($value) { $this->pages_links = $value; } function setPageResults($value) { $this->pages_results = $value; } function setPageVar($var) { $this->page_var = $var; } function get_page_number($p = null) { $total_pages = $this->get_total_pages(); if ($p !== null) { return ($p > $total_pages ? 1 : $p); } else { $value = (isset($_REQUEST[$this->page_var]) && !empty($_REQUEST[$this->page_var]) && is_numeric($_REQUEST[$this->page_var]) ? $_REQUEST[$this->page_var] : 1); return ($value > $total_pages ? 1 : $value); } return 1; } function get_total_pages() { $result = ($this->results != 0 && $this->pages_results != 0 ? ceil($this->results / $this->pages_results) : 1); return (isset($result) && $result == 0 ? 1 : $result); } function get_start_offset() { return ($this->results > 0 ? ($this->pages_results * ($this->page_number - 1)) + 1 : 0); } function get_db_offset() { return ($this->pages_results * ($this->page_number - 1)); } function get_end_offset() { return ($this->get_start_offset() > ($this->results - $this->pages_results) ? $this->results : ($this->get_start_offset() + ($this->pages_results - 1))); } function get_prev_page() { return ($this->page_number > 1 ? ($this->page_number - 1) : 0); } function get_next_page() { return ($this->page_number < $this->total_pages ? ($this->page_number + 1) : 0); } function get_start_number() { $half = ceil($this->pages_links / 2); if ($this->page_number <= $half || $this->total_pages <= $this->pages_links) { return 1; } else if ($this->page_number >= ($this->total_pages - $half)) { return ($this->total_pages - $this->pages_links) + 1; } else { return $this->page_number - $half; } } function get_end_number() { if ($this->total_pages < $this->pages_links) { return $this->total_pages; } else { return ($this->get_start_number() + $this->pages_links) - 1; } } function get_page_numbers() { $numbers = array(); for($p = $this->get_start_number(); $p <= $this->get_end_number(); $p++) { $numbers[] = $p; } return $numbers; } } ?>

[/php]

Usage example:

[php]
require_once(’/path/to/class.Pagination.php’);

$pagination = new Pagination();
$pagination->setPageVar(‘page’); // the variable name used to define page number ?page=X
$pagination->setResults($total_results); // total number of results e.g. SELECT COUNT(*) FROM portfolio WHERE type=‘FirstSet’
$pagination->setPageResults(6); // the number of results (rows) to show per page
$pagination->setPageLinks(3); // if needed, the number of page links to show at a time e.g. Prev [1, 2, 3] Next
$pages = $pagination->pagesInfo(); // build pages array

// query results
// e.g. SELECT * FROM portfolio WHERE type=‘FirstSet’ LIMIT $pages[‘Db_Offset’], $pages[‘Page_Results’]
[/php]

Sponsor our Newsletter | Privacy Policy | Terms of Service