jianneng
10-13-2003, 06:27 AM
Hi, I have this table generated with values from the database. By default, the data will be sorted ascendingly according to first column. I want the data to be sorted according to any column, that would mean whenever I click on the title of any column, it would sort descendingly, then if I click at the same column again, it will revert back to ascending sort, and so on.
Well, I can make them work only once, i.e. descendingly, after that I can't revert the sorting back to ascending. Can anyone help me on this? I hope I don't have to use any JavaScript on this...
Thanks.
<?PHP
// Get the name of the column to sort
$columnname = "";
if ($_GET['columnname']) {
$columnname = $_GET['columnname'];
}
// Get the value of either ascending or descending
$order = "";
if ($_GET['order']) {
$order = $_GET['order'];
}
// Display 20 records per page.
$display_number = 20;
// Connect to the database.
$db_connection = mysql_connect ('localhost', 'root', '123456') or die (mysql_error());
$db_select = mysql_select_db('proposal');
// Make the calculation to see how many pages are there.
if (!isset($num_pages)) {
$query1 = "SELECT * FROM proposals";
// Query the database.
$query_result1 = mysql_query ($query1) or die (mysql_error());
// Calculate the number of pages required.
$num_results = @mysql_num_rows ($query_result1);
if ($num_results > $display_number) {
$num_pages = ceil ($num_results/$display_number);
} elseif ($num_results > 0) {
$num_pages = 1;
} else {
echo '<font color="#006699" size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>There are no proposals at all.</b></font>';
}
// Currently at item 0.
$start = 0;
}
// Make the default column name
if ($columnname == "")
{$columnname = "proposalno"; }
// Make the default order sorting
if ($order == "") {
$order = "ASC"; }
elseif ($order == "ASC") {
$order = "DESC";}
elseif ($order == "DESC") {
$order = "ASC";}
// Make the new, limited query.
$query = "SELECT * FROM proposals ORDER BY $columnname $order LIMIT $start, $display_number";
// Print a table.
echo '<br><table width="760" align="center" cellpadding="0" cellspacing="0" border="1" bordercolor="#3399CC">
<tr align="center" bgcolor="#006699">
<td width="100">
<div align="center">
<font color="#FFFFFF" size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>Proposal No</b></font>
</div>
</td>
// Here is the column that I tested...
<td width="260">
<div align="center">
<font color="#FFFFFF" size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><a href="proposal-basicview.php?columnname=clientsname&order=ASC">Client Name</a></b></font>
</div>
</td>
<td width="400">
<div align="center">
<font color="#FFFFFF" size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>Project Title</b></font>
</div>
</td>
</tr>';
// Print each item.
$query_result = @mysql_query ($query);
while ($row = @mysql_fetch_array ($query_result)) {
echo " <tr align=\"center\" bgcolor=\"$row[colourcode]\">
<td align=\"left\"><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\" color=\"#006699\"> $row[proposalno]</font></td>
<td align=\"left\"><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\" color=\"#006699\"> $row[clientsname]</font></td>
<td align=\"left\"><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\" color=\"#006699\"> $row[projecttitle]</font></td>
</tr>";
}
...
?>
Well, I can make them work only once, i.e. descendingly, after that I can't revert the sorting back to ascending. Can anyone help me on this? I hope I don't have to use any JavaScript on this...
Thanks.
<?PHP
// Get the name of the column to sort
$columnname = "";
if ($_GET['columnname']) {
$columnname = $_GET['columnname'];
}
// Get the value of either ascending or descending
$order = "";
if ($_GET['order']) {
$order = $_GET['order'];
}
// Display 20 records per page.
$display_number = 20;
// Connect to the database.
$db_connection = mysql_connect ('localhost', 'root', '123456') or die (mysql_error());
$db_select = mysql_select_db('proposal');
// Make the calculation to see how many pages are there.
if (!isset($num_pages)) {
$query1 = "SELECT * FROM proposals";
// Query the database.
$query_result1 = mysql_query ($query1) or die (mysql_error());
// Calculate the number of pages required.
$num_results = @mysql_num_rows ($query_result1);
if ($num_results > $display_number) {
$num_pages = ceil ($num_results/$display_number);
} elseif ($num_results > 0) {
$num_pages = 1;
} else {
echo '<font color="#006699" size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>There are no proposals at all.</b></font>';
}
// Currently at item 0.
$start = 0;
}
// Make the default column name
if ($columnname == "")
{$columnname = "proposalno"; }
// Make the default order sorting
if ($order == "") {
$order = "ASC"; }
elseif ($order == "ASC") {
$order = "DESC";}
elseif ($order == "DESC") {
$order = "ASC";}
// Make the new, limited query.
$query = "SELECT * FROM proposals ORDER BY $columnname $order LIMIT $start, $display_number";
// Print a table.
echo '<br><table width="760" align="center" cellpadding="0" cellspacing="0" border="1" bordercolor="#3399CC">
<tr align="center" bgcolor="#006699">
<td width="100">
<div align="center">
<font color="#FFFFFF" size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>Proposal No</b></font>
</div>
</td>
// Here is the column that I tested...
<td width="260">
<div align="center">
<font color="#FFFFFF" size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><a href="proposal-basicview.php?columnname=clientsname&order=ASC">Client Name</a></b></font>
</div>
</td>
<td width="400">
<div align="center">
<font color="#FFFFFF" size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>Project Title</b></font>
</div>
</td>
</tr>';
// Print each item.
$query_result = @mysql_query ($query);
while ($row = @mysql_fetch_array ($query_result)) {
echo " <tr align=\"center\" bgcolor=\"$row[colourcode]\">
<td align=\"left\"><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\" color=\"#006699\"> $row[proposalno]</font></td>
<td align=\"left\"><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\" color=\"#006699\"> $row[clientsname]</font></td>
<td align=\"left\"><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\" color=\"#006699\"> $row[projecttitle]</font></td>
</tr>";
}
...
?>