View the full tutorial at
I have tested this many times and it works fine.
Please don't complain unless you really can't get it working, Just PM me and I'll fill in the blanks
Happy Coding :)

//connect info
$hostname = "localhost";
$database = "";
$username = "";
$password = "";
$conn = mysql_pconnect($hostname, $username, $password); 
$page = $_SERVER['PHP_SELF']; // Makes $page the current page e.g:query.php
//the query
if (!isset($sort)){
$sort = column1; // the one to sort by default
mysql_select_db($database, $conn);
$query = "SELECT * FROM table ORDER BY $sort";
$sql = mysql_query($query, $conn) or die(mysql_error());
//print the table
echo '<table><tr><td>column1</td><td>column2</td><td>column3</td></tr>';
while($row = mysql_fetch_assoc($sql)){
//echo the results
echo '<tr><td><a href="'.$page.'?sort=column1>"'.$row['column1'].'</a></td><td><a href="'.$page.'?sort=column2>"'.$row['column2'].'</a></td><td>a href="'.$page.'?sort=column3>"'.$row['column3'].'</a></td></tr>\n';
//close the table
echo '</table>';

Don't you need a $sort=$_GET['sort']; somewhere. If that statement of code is not included $sort will never be set before the if (!isset($sort)) statement and the table will only sort based on the default value.

That depends on your server setting in your php ini
by habbit I usually forget it as All of my servers have this checked.
but if you don't then yes you should put that in

where would you put the $sort=$_GET; in your code?