Quote:
Originally Posted by cinq
Unfortunately nope.
I would be interested to know too.
|
This is the proper way to do pagination. It's from one of my scripts, and the original code is taken right out of vbulletin. All you need to edit are the two queries, the template that is called, and the fields you want to sort by.
PHP Code:
// globalize variables
globalize($_REQUEST, array(
'pagenumber' => INT, // pagenumber
'perpage' => INT, // results per page
'sortfield' => STR, // field by which to sort results
'sortorder' => STR, // order in which to sort
));
if ($sortfield == '') {
$sortfield = 'name';
}
if ($sortorder == '') {
$sortorder = 'asc';
}
switch ($sortfield)
{
case 'name':
$sqlsort = 'name';
break;
case 'id':
$sqlsort = 'id';
break;
default:
$sqlsort = 'name';
$sortfield = 'name';
}
if ($sortorder != 'asc')
{
$sortorder = 'desc';
$oppositesort = 'asc';
}
else
{
// $sortorder = 'ASC';
$oppositesort = 'desc';
}
$sorturl = "$_SERVER[PHP_SELF]?$session[sessionurl]";
eval('$sortarrow[' . $sortfield . '] = "' . fetch_template('forumdisplay_sortarrow') . '";');
$dscount = $DB_site->query_first("
SELECT COUNT(*) AS count FROM site_garment
");
$dscount = $dscount['count'];
// set defaults
sanitize_pageresults($dscount, $pagenumber, $perpage, 100, 20);
$limitlower = ($pagenumber - 1) * $perpage+1;
$limitupper = ($pagenumber) * $perpage;
$counter = 0;
if ($limitupper > $dscount)
{
$limitupper = $dscount;
if ($limitlower > $dscount)
{
$limitlower = $dscount-$perpage;
}
}
if ($limitlower <= 0)
{
$limitlower = 1;
}
$spheres = $DB_site->query("SELECT * FROM site_garment ORDER BY $sqlsort $sortorder LIMIT ". ($limitlower-1) . ", $perpage");
$counter = 0;
$resultbits = '';
while ($grid = $DB_site->fetch_array($spheres) AND $counter++ < $perpage)
{
$grid[bonuses] = nl2br($grid[bonuses]);
eval('$dresspheres .= "' . fetch_template('site_ffx2_dsp_grid') . '";');
} // end while
$pagenav = construct_page_nav($dscount, "$_SERVER[PHP_SELF]?$session[sessionurl]", "&pp=$perpage&order=$sortorder&sort=$sortfield");