Tweaking your Community

:)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

You are not connected. Please login or register

PHP [] Projects [] Site Navigation sample source codes

Go down  Message [Page 1 of 1]

sir.penney

sir.penney
Administrator
Administrator

Code:
An easy page browser ( prev 6 7 8 9 10 next )

<?

    I've had some requests for making it support MSSQL (MSSQL doesn't support the LIMIT
    clause) But I'm sure there is a way to get around it :) Keep checking this page...
   
    -----------
    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>";

   
    /*
   
    I hope this can come in handy :)
   
    */
?>

Back to top  Message [Page 1 of 1]

Permissions in this forum:
You cannot reply to topics in this forum

 



iJerick | Forumotion | Punbb | jQuery | CSS3
Copyright © 2011 TweakGround™. All Right Reserved.

Free forum | ©phpBB | Free forum support | Report an abuse | Forumotion.com