PX : code

Sort Order Function by Serge Stepanov
Download this code


<?

/**

sort_order.php - Copyright 2001 - 2002 Serge Stepanov.

This code is written with the hope that it will be of use to someone, and comes "as is"
without warranty of any kind.  I (Serge Stepanov) do no warrant or guarantee 
that the code will work under any circumstances besides my own.  Any damage caused
by the use of this script are not the fault of the author.  You are hereby granted
permission to use this code in a commerical or non-commerical environment without
any fees or written concent.   You may distribute, copy and/or modifiy this code for
non-commercial purposes, however, this copyright notice must appear on all copies.

And lastly, I ask that if you found this code useful or helpful in anyway, I would love to hear
from you, so if you may, please drop me a line at webmaster@gfxcafe.com

This is a simple function I wrote that comes in handy when I want to have
href links on a page to sort a SQL query (in both ascending and decending orders, the two
will alternate).  I will make this into an object later on, but it works great as a function too.

The function relies on these values:
$order_title - What to label the link, passed to function.
$order_table - What row to sort by for that link, passed to function.
$sortorder - Created by the function in the href links, the function gets this value as a global var.
$order_options - The function makes this global var containing the SQL code which you put into the query.
$order_number - Global var, used to generate the sequencial link numbers.
$extra - Any extra variables that you want put in the href link (could be anything).

An example is provided below the function.

**/

function create_order_block ($order_title, $order_table) {
    // create sort order for SQL queries
    global $sortorder, $order_options, $order_number, $extra, $PHP_SELF;
    $order_number++;

    if ($sortorder == $order_number . "a") {
        $order_options = "ORDER BY $order_table ASC";
        $order_block = "<b><a href=\"$PHP_SELF?sortorder=$order_number" . "d" . "$extra\">$order_title</a></b> ";
        return $order_block;
    } else if ($sortorder == $order_number . "d") {
        $order_options = "ORDER BY $order_table DESC";
        $order_block = "<b><a href=\"$PHP_SELF?sortorder=$order_number" . "a" . "$extra\">$order_title</a></b> ";
        return $order_block;
    } else {
        $order_block = "<a href=\"$PHP_SELF?sortorder=$order_number" . "d" . "$extra\">$order_title</a> ";
        return $order_block;
    }
}

/**

Example

**/

// MySQL connection code here 

// $extra = "&extra_vars_to_pass=1";

$links = "Sort By: ";
$links .= create_order_block("Column 1", "col1") . "|";
$links .= create_order_block("Column 2", "col2") . "<br>";

echo $links;

$query = mysql_query("SELECT col1, col2 FROM table $order_options");

while ($row = mysql_fetch_array($query)) {
    echo $row['col1'] . "  -  " . $row['col2'];
    echo "<br>\n";
}

?>

Comments or questions?
PX is running PHP 5.2.17
Thanks to Miranda Productions for hosting and bandwidth.
Use of any code from PX is at your own risk.