Changeset 35223 for trunk/www


Ignore:
Timestamp:
Mar 21, 2008, 6:04:51 AM (12 years ago)
Author:
eridius@…
Message:

Add fairly simple implementation of paging to the by=all view

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/www/ports.php

    r35222 r35223  
    2121    $by = isset($_GET['by']) ? $_GET['by'] : '';
    2222    $substr = isset($_GET['substr']) ? $_GET['substr'] : '';
     23    $page = isset($_GET['page']) ? max($_GET['page'], 0) : '';
     24    $pagesize = isset($_GET['pagesize']) ? max($_GET['pagesize'], 0) : 50; # arbitrary setting
    2325
    2426    print_header('The MacPorts Project -- Available Ports', 'utf-8');
     
    111113        case 'all':
    112114            $criteria = '';
     115            $paging = true;
    113116            break;
    114117        default:
     
    118121        $where = ($criteria == '' ? '' : "WHERE $criteria");
    119122        $query = "SELECT DISTINCT $fields FROM $tables $where ORDER BY name";
     123        if ($paging) {
     124            $offset = $pagesize * $page;
     125            $query .= " LIMIT $pagesize OFFSET $offset";
     126            # get the total count
     127            $countquery = "SELECT COUNT(*) FROM $tables $where ORDER By name";
     128            $result = mysql_query($countquery);
     129            $row = mysql_fetch_array($result); # only 1 row
     130            $totalcount = $row[0];
     131            $pagecount = ceil($totalcount / $pagesize);
     132            # generate a paging control and cache it so we can show it twice
     133            $pagecontrol = "<p>Page ";
     134            for ($i = 0; $i < $pagecount; $i++) {
     135                if ($i != 0) {
     136                    $pagecontrol .= " | ";
     137                }
     138                if ($i == $page) {
     139                    $pagecontrol .= "<b>$i</b>";
     140                } else {
     141                    $pagecontrol .= "<a href=\"$_SERVER[PHP_SELF]?by=$by&amp;substr=$substr&amp;page=$i&amp;pagesize=$pagesize\">$i</a>";
     142                }
     143            }
     144            $pagecontrol .= "</p>";
     145        }
    120146        $result = mysql_query($query);
    121147       
    122148        /* Main query sent to the DB */
    123149        if ($result) {
    124             print '<h3>Query Results</h3><p><i>' . mysql_num_rows($result) . ' ' . (mysql_num_rows($result) == 1 ? 'Portfile' : 'Portfiles')
    125             . ' Selected</i></p>';
     150            print '<h3>Query Results</h3>';
     151            $resultrows = mysql_num_rows($result);
     152            if ($paging) {
     153                print $pagecontrol;
     154                $numrows = ($offset+1) . "-" . ($offset + $resultrows) . " of $totalcount Portfile" . ($totalcount == 1 ? '' : 's');
     155            } else {
     156                $numrows = "$resultrows Portfile" . ($resultrows == 1 ? '' : 's');
     157            }
     158            print "<p><i>$numrows Selected</i></p>";
    126159
    127160            print '<dl>';
     
    211244            print '</dl>';
    212245
     246            if ($paging) {
     247                print $pagecontrol;
     248            }
     249
    213250        /* When we hit this else, the query failed for some reason */
    214251        } else {
Note: See TracChangeset for help on using the changeset viewer.