CoderZone.org

Category: >> PHP Code >> Easy page browser Bookmark and Share

<< lastnext >>

Snippet Name: Easy page browser

Description: An easy page browser class that produces this type of utput: ( prev 6 7 8 9 10 next )

Comment: (none)

Author: CoderZone
Language: PHP
Highlight Mode: PHP
Last Modified: March 01st, 2009

<?php 
/*
    ----------- 
    Description 
    ----------- 
 
    The function returns an array of 3 values as described below: 
    VALUE 1 [0]: Returns a string that can be appended to your SQL query so that the 
             correct block of rows can be returned. Eg. " LIMIT 10, 20" 
    VALUE 2 [1]: Returns an html string that gives the user an indication of which rows 
             he's currently browsing. Eg. 11-20 
    VALUE 3 [2]: Returns an html navigation bar needed for navigating through the total 
             result returned Eg. Page: << 6 7 8 9 10 >> 
 
    --------- 
    Arguments 
    --------- 
 
    The first 4 arguments are declared/assigned by you while the last 3 are done when 
    you start using the navigation bar generated by the function (See 'Usage' below). 
 
    totalrows - The TOTAL amount of rows returned by your executed SQL statement 
    numLimit  - The amount of page numbers you'd like displayd in your navigation bit 
            Eg. '4' would display "Page: 1 2 3 4 Next 4 >>" 
    amm      - The amount of rows returned per page (for the SQL string to append) 
    queryStr  - If you'd like extra vars to be passed to that page Eg. "&name=value" 
 
    There are also 3 variables inside the function you can change if you'd like the 
    navigation bar to look a little different (larrow,rarrow,wholePiece). 
 
    ----- 
    Usage 
    ----- 
 
    See 'Usage' at the end of this document. 
 
    */ 
 
    function pageBrowser($totalrows,$numLimit,$amm,$queryStr,$numBegin,$begin,$num) { 
 
        $larrow = " << Prev ".$numLimit." "; //You can either have an image or text, eg. Previous 
        $rarrow = " Next ".$numLimit." >> "; //You can either have an image or text, eg. Next 
        $wholePiece = "Page: "; //This appears in front of your page numbers 
 
        if ($totalrows > 0) { 
            $numSoFar = 1; 
            $cycle = ceil($totalrows/$amm); 
            if (!isset($numBegin) || $numBegin < 1) { 
                $numBegin = 1; 
                $num = 1; 
            } 
            $minus = $numBegin-1; 
            $start = $minus*$amm; 
            if (!isset($begin)) { 
                $begin = $start; 
            } 
            $preBegin = $numBegin-$numLimit; 
            $preStart = $amm*$numLimit; 
            $preStart = $start-$preStart; 
            $preVBegin = $start-$amm; 
            $preRedBegin = $numBegin-1; 
            if ($start > 0 || $numBegin > 1) { 
                $wholePiece .= "<a href='?num=".$preRedBegin 
                        ."&numBegin=".$preBegin 
                        ."&begin=".$preVBegin 
                        .$queryStr."'>" 
                        .$larrow."</a>\n"; 
            } 
            for ($i=$numBegin;$i<=$cycle;$i++) { 
                if ($numSoFar == $numLimit+1) { 
                    $piece = "<a href='?numBegin=".$i 
                        ."&num=".$i 
                        ."&begin=".$start 
                        .$queryStr."'>" 
                        .$rarrow."</a>\n"; 
                    $wholePiece .= $piece; 
                    break; 
                } 
                $piece = "<a href='?begin=".$start 
                    ."&num=".$i 
                    ."&numBegin=".$numBegin 
                    .$queryStr 
                    ."'>"; 
                if ($num == $i) { 
                    $piece .= "</a><b>$i</b><a>"; 
                } else { 
                    $piece .= "$i"; 
                } 
                $piece .= "</a>\n"; 
                $start = $start+$amm; 
                $numSoFar++; 
                $wholePiece .= $piece; 
            } 
            $wholePiece .= "\n"; 
            $wheBeg = $begin+1; 
            $wheEnd = $begin+$amm; 
            $wheToWhe = "<b>".$wheBeg."</b> - <b>"; 
            if ($totalrows <= $wheEnd) { 
                $wheToWhe .= $totalrows."</b>"; 
            } else { 
                $wheToWhe .= $wheEnd."</b>"; 
            } 
            $sqlprod = " LIMIT ".$begin.", ".$amm; 
        } else { 
            $wholePiece = "Sorry, no records to display."; 
            $wheToWhe = "<b>0</b> - <b>0</b>"; 
        } 
 
        return array($sqlprod,$wheToWhe,$wholePiece); 
    } 
 
    /*  /////////////////////////////////////////////////////
    | Usage | 
    NOTE!:  This is just an example and WON'T WORK if you include 
        this in your code, comment it out or delete it :) 
    */ 
 
    $criterea = " WHERE column=value AND column_2=value_2"; 
    $sql = "SELECT COUNT(*) AS totalrows FROM table".$criterea; 
    //get the total amount of rows returned 
    $arr = mysql_fetch_array(mysql_query($sql)); 
 
     ////////////////////////////////////////////////////////
 
    /*
        Call the function: 
 
        I've used the global $_GET array as an example for people 
        running php with register_globals turned 'off' :) 
    */ 
    $navigate = pageBrowser($arr[totalrows],10,10,"&name=value",$_GET[numBegin],$_GET[begin],$_GET[num]); 
    //execute the new query with the appended SQL bit returned by the function 
    $sql = "SELECT * FROM table".$criterea.$navigate[0]; 
    $rs = mysql_query($sql); 
    //the indication of which rows are being browsed. Eg. listing 1-10 of 100 results. 
    echo "<p>Listing ".$navigate[1]." of ".$totalrows." results.</p>"; 
    //the navigation bar returned by the function 
    echo "<p>".$navigate[2]."</p>"; 
    //loop and display the limited records being browsed 
    while ($arr = mysql_fetch_array($rs)) { 
        echo $arr[column_1]." ".$arr[column_2]."<br>"; 
    } 
    //the navigation bar at the bottom again 
    echo "<p>".$navigate[2]."</p>"; 
 
?>
 
 
There haven't been any comments added for this snippet yet. You may add one if you like.  Add a comment 
© coderzone.org | users online: 7