From 181194da52233af5148ba8557dcecd58247ad462 Mon Sep 17 00:00:00 2001 From: Robert Sesek Date: Wed, 26 Jul 2006 01:08:56 +0000 Subject: [PATCH] r958: Adding pagination to search results --- docs/schema_changes.sql | 2 ++ search.php | 31 +++++++++++++++++-------------- templates/search_results.tpl | 8 ++++++++ 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/docs/schema_changes.sql b/docs/schema_changes.sql index 8477a66..38e6106 100644 --- a/docs/schema_changes.sql +++ b/docs/schema_changes.sql @@ -30,3 +30,5 @@ DELETE FROM search; ALTER TABLE user ADD defaultsortkey varchar(50) NULL; ALTER TABLE user ADD defaultsortas varchar(10) NULL; + +ALTER TABLE search ADD resultcount INT(10) NULL; diff --git a/search.php b/search.php index 3dc3388..481811c 100644 --- a/search.php +++ b/search.php @@ -31,6 +31,7 @@ $focus['search'] = 'focus'; require_once('./global.php'); require_once('./includes/functions_product.php'); +require_once('./includes/class_pagination.php'); if (!can_perform('cansearch')) { @@ -280,12 +281,13 @@ if ($_REQUEST['do'] == 'process') { $db->query(" REPLACE INTO " . TABLE_PREFIX . "search - (userid, dateline, query, ids, orderby, hilight) + (userid, dateline, query, ids, orderby, hilight, resultcount) VALUES (" . $bugsys->userinfo['userid'] . ", " . TIMENOW . ", '" . $bugsys->escape($query) . "', '" . implode(',', $ids) . "', '" . $bugsys->escape($sortclause) . "', - '" . $bugsys->escape($hilight) . "' + '" . $bugsys->escape($hilight) . "', + " . sizeof($results) . " )" ); } @@ -365,27 +367,25 @@ if ($_REQUEST['do'] == 'results') $search = $cachedsearch; if ($search['dateline'] < TIMENOW - 900 OR $bugsys->in['rerun']) { - $search = $db->query(str_replace(array("#<'ONBITS:VIEW'>#", "#<'ONBITS:HIDDEN'>#"), array(fetch_on_bits('canviewbugs'), fetch_on_bits('canviewhidden')), $search['query'])); - while ($bug = $db->fetch_array($search)) + $research = $db->query(str_replace(array("#<'ONBITS:VIEW'>#", "#<'ONBITS:HIDDEN'>#"), array(fetch_on_bits('canviewbugs'), fetch_on_bits('canviewhidden')), $search['query'])); + while ($bug = $db->fetch_array($research)) { $ids[] = $bug['bugid']; $results[] = $bug; } - $db->query("UPDATE " . TABLE_PREFIX . "search SET ids = '" . implode(',', $ids) . "', dateline = " . TIMENOW . " WHERE userid = " . $bugsys->userinfo['userid']); - } - else - { - $search = $db->query("SELECT * FROM " . TABLE_PREFIX . "bug WHERE bugid IN ($search[ids]) $search[orderby]"); - while ($bug = $db->fetch_array($search)) - { - $results[] = $bug; - } + $search['ids'] = implode(',', $ids); + $db->query("UPDATE " . TABLE_PREFIX . "search SET ids = '" . implode(',', $ids) . "', dateline = " . TIMENOW . ", resultcount = " . sizeof($results) . " WHERE userid = " . $bugsys->userinfo['userid']); } $show['cached'] = true; $hilight = $search['hilight']; } - foreach ($results AS $bug) + $pagination = new Pagination('p', 'pp'); + $pagination->total = $search['resultcount']; + $pagination->split_pages(); + + $search = $db->query("SELECT * FROM " . TABLE_PREFIX . "bug WHERE bugid IN ($search[ids]) $search[orderby] LIMIT " . $pagination->fetch_limit($pagination->page - 1) . ", " . $pagination->perpage); + while ($bug = $db->fetch_array($search)) { $funct->exec_swap_bg($stylevar['alt_colour'], ''); $bug['bgcolour'] = ($bugsys->userinfo['showcolours'] ? $bugsys->datastore['status']["$bug[status]"]['color'] : $funct->bgcolour); @@ -402,6 +402,9 @@ if ($_REQUEST['do'] == 'results') eval('$bugs .= "' . $template->fetch('trackerhome_bits') . '";'); } + $show['pagenav'] = ($pagination->pagecount > 1 ? true : false); + $pagenav = $pagination->construct_page_nav('search.php'); + eval('$template->flush("' . $template->fetch('search_results') . '");'); } diff --git a/templates/search_results.tpl b/templates/search_results.tpl index eeaff29..79d86d6 100644 --- a/templates/search_results.tpl +++ b/templates/search_results.tpl @@ -27,4 +27,12 @@ $header $bugs + + +
+$pagenav +
+ +
+ $footer \ No newline at end of file -- 2.22.5