Jump to content

Sorting by specific colum alphabeticly , with the click of a link


netpants

Recommended Posts

Ok I have my display.php http://www.freegamespot.net/dancefactory/display.php and it displays all of the entries in a nice format from my database, now I need to be able to click on the Name link at the top and sort that display in alphabeticle order by name, or date, or prize, or address if I want. How do I turn those table header names into links that would sort that display into whatever one I want it sorted by. Here is the code I used to display my database infromation. As you will see I have already attempted this but it is not working. Please help.

[code]<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Add Winner</title>
</head>

<body bgcolor="#000000">

<p align="center">
<img border="0" src="1392094530_m.jpg" width="170" height="119"></p>
<table border="0" width="986">
<tr>
<td width="113"><font color="#FFFFFF"><a href="insert.php">Add Winner</a></font><p>
<font color="#FFFFFF"><a href="display.php">Display Winner</a></font></td>
<td width="863" rowspan="3" valign="top">
<table border="0" width="100%">
<tr>
<td>&nbsp;<?
$username="";
$password="";
$database="";

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * FROM Winners";
$result=mysql_query($query);

$num=mysql_numrows($result);

mysql_close();

?>

<table border="0" cellspacing="2" cellpadding="2">
<tr>
<th><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><a href="<? $orderby = 'id' ?>">ID</a></font></th>
<th><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2">Date</font></th>
<th><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><a href="<? $orderby = 'name' ?>">Name</a></font></th>
<th><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2">Birthday</font></th>
<th><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2">Phone</font></th>
<th><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2">Street Number</font></th>
<th><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2">Street Name</font></th>
<th><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2">City</font></th>
<th><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2">State</font></th>
<th><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2">Zip</font></th>
<th><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2">Prize</font></th>
</tr>

<?
$i=0;
while ($i < $num) {
$id=mysql_result($result,$i,"id");
$date=mysql_result($result,$i,"loggedDate");
$first=mysql_result($result,$i,"firstName");
$last=mysql_result($result,$i,"lastName");
$birth=mysql_result($result,$i,"birth");
$phone=mysql_result($result,$i,"phone");
$streetnumber=mysql_result($result,$i,"streetNumber");
$streetname=mysql_result($result,$i,"streetName");
$city=mysql_result($result,$i,"city");
$state=mysql_result($result,$i,"state");
$zip=mysql_result($result,$i,"zip");
$prize=mysql_result($result,$i,"prize"); 
?>

<tr>
<td bgcolor="#333333"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$id"; ?></font></td>
<td bgcolor="#202020"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$date"; ?></font></td>
<td bgcolor="#333333"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$first $last"; ?></font></td>
<td bgcolor="#202020"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$birth"; ?></font></td>
<td bgcolor="#333333"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$phone";  ?></font></td>
<td bgcolor="#202020"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$streetnumber"; ?></font></td>
<td bgcolor="#333333"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$streetname";  ?></font></td>
<td bgcolor="#202020"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$city";  ?></font></td>
<td bgcolor="#333333"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$state";  ?></font></td>
<td bgcolor="#202020"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$zip";  ?></font></td>
<td bgcolor="#333333"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$prize";  ?></font></td>
</tr>
<?
++$i;
}
echo "</table>";


?>
</td>
</tr>
</table>
<p>

</body>

</html>

</html>[/code]
Thank you
You need to add an ordery_by variable: $order_by

At the beginning of the script we will check to see if a column has been selected to order by, if not default to last name in alphabetical order:
[code]
<?php
if (isset($_GET['order_by'])) {
$order_by = $_GET['order_by'];
} else {
$order_by = "lastName";
}
?>
[/code]

Amend your select statement to use the order by condition:
[code]
<?php
$query="SELECT * FROM Winners ORDER BY ".$order_by." ASC";
?>
[/code]

You then need to make your headers in the table into links:
[code]
<th><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><a href="<?php echo $_SERVER['PHP_SELF']."?order_by=\"column_name\""; ?>">ID</a></font></th>
[/code]

In the above code remember to change column_name to the relevent table column names from your database.
You would have to change the links and the query.
put this before your query
[code]if(isset($_GET['sort'])){
$sort = $_GET['sort'];
$order = $_GET['order'];
} else {
$sort = "lastName";
$order = "ASC";
}[/code]

Now your query would be
[code]$query="SELECT * FROM Winners ORDER BY $sort $order";[/code]

now the links are a little tougher. try this before your table output
[code]// array of values
$sort_array = array("lastName" => "ASC", "loggedDate" => "ASC", "birth" => "ASC", "phone" => "ASC", "streetNumber" => "ASC", "streetName" => "ASC", "city" => "ASC", "state" => "ASC", "zip" => "ASC", "prize" => "ASC");
$bgcolor = "#333333";
foreach($sort_array as $linksort => $linkorder){
// alternate color
if($bgcolor == "#202020"){
$bgcolor = "#333333";
} else {
$bgcolor = "#202020";
}
if($linksort == $sort && $linkorder == $order){
echo "<td bgcolor=$bgcolor><font face='Arial, Helvetica, sans-serif' color='#FFFFFF' size='2'><a href=\"".$_SERVER['PHP_SELF']."?sort=".$linksort."&order=DESC\">".$linksort."</a></font></td>";
} else {
echo "<td bgcolor=$bgcolor><font face='Arial, Helvetica, sans-serif' color='#FFFFFF' size='2'><a href=\"".$_SERVER['PHP_SELF']."?sort=".$linksort."&order=".$linkorder."\">".$linksort."</a></font></td>";
}
}[/code]

Hopefully that is all set I didn't test it

Ray
This will do it. Only thing I would suggest it making your fields names in your db a little more pleasing because this needs to use the exact filed name for the sort so it shows the field name not a friendly name.
Example: LastName, FirstName, BirthDate, StreetName ect. ect. ect...

[code]<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Add Winner</title>
</head>

<body bgcolor="#000000">

<p align="center">
<img border="0" src="1392094530_m.jpg" width="170" height="119"></p>
<table border="0" width="986">
<tr>
<td width="113"><font color="#FFFFFF"><a href="insert.php">Add Winner</a></font><p>
<font color="#FFFFFF"><a href="display.php">Display Winner</a></font></td>
<td width="863" rowspan="3" valign="top">
<table border="0" width="100%">
<tr>
<td>&nbsp;
<?
$username="";
$password="";
$database="";

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
// set sort
if(isset($_GET['sort'])){
$sort = $_GET['sort'];
$order = $_GET['order'];
} else {
$sort = "lastName";
$order = "ASC";
}

$query="SELECT * FROM Winners ORDER BY $sort $order";
$result=mysql_query($query);

$num=mysql_numrows($result);

mysql_close();

?>

<table border="0" cellspacing="2" cellpadding="2">
<tr>
<?
foreach($sort_array as $linksort => $linkorder){
// alternate color
if($bgcolor == "#202020"){
$bgcolor = "#333333";
} else {
$bgcolor = "#202020";
}
if($linksort == $sort && $linkorder == $order){
echo "<td bgcolor=$bgcolor><font face='Arial, Helvetica, sans-serif' color='#FFFFFF' size='2'><a href=\"".$_SERVER['PHP_SELF']."?sort=".$linksort."&order=DESC\">".$linksort."</a></font></td>";
} else {
echo "<td bgcolor=$bgcolor><font face='Arial, Helvetica, sans-serif' color='#FFFFFF' size='2'><a href=\"".$_SERVER['PHP_SELF']."?sort=".$linksort."&order=".$linkorder."\">".$linksort."</a></font></td>";
}
}
?>
</tr>
<?
$i=0;
while ($i < $num) {
$id=mysql_result($result,$i,"id");
$date=mysql_result($result,$i,"loggedDate");
$first=mysql_result($result,$i,"firstName");
$last=mysql_result($result,$i,"lastName");
$birth=mysql_result($result,$i,"birth");
$phone=mysql_result($result,$i,"phone");
$streetnumber=mysql_result($result,$i,"streetNumber");
$streetname=mysql_result($result,$i,"streetName");
$city=mysql_result($result,$i,"city");
$state=mysql_result($result,$i,"state");
$zip=mysql_result($result,$i,"zip");
$prize=mysql_result($result,$i,"prize");
?>

<tr>
<td bgcolor="#333333"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$id"; ?></font></td>
<td bgcolor="#202020"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$date"; ?></font></td>
<td bgcolor="#333333"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$first $last"; ?></font></td>
<td bgcolor="#202020"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$birth"; ?></font></td>
<td bgcolor="#333333"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$phone";  ?></font></td>
<td bgcolor="#202020"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$streetnumber"; ?></font></td>
<td bgcolor="#333333"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$streetname";  ?></font></td>
<td bgcolor="#202020"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$city";  ?></font></td>
<td bgcolor="#333333"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$state";  ?></font></td>
<td bgcolor="#202020"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$zip";  ?></font></td>
<td bgcolor="#333333"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><? echo "$prize";  ?></font></td>
</tr>
<?
++$i;
}
echo "</table>";


?>
</td>
</tr>
</table>
<p>

</body>

</html>

</html>






<?php
if(isset($_GET['sort'])){
$sort = $_GET['sort'];
$order = $_GET['order'];
} else {
$sort = "lastName";
$order = "ASC";
}

$query="SELECT * FROM Winners ORDER BY $sort $order";
echo "<table><tr>";
// array of values
$sort_array = array("lastName" => "ASC", "loggedDate" => "ASC", "birth" => "ASC", "phone" => "ASC", "streetNumber" => "ASC", "streetName" => "ASC", "city" => "ASC", "state" => "ASC", "zip" => "ASC", "prize" => "ASC");
$bgcolor = "#333333";
foreach($sort_array as $linksort => $linkorder){
// alternate color
if($bgcolor == "#202020"){
$bgcolor = "#333333";
} else {
$bgcolor = "#202020";
}
if($linksort == $sort && $linkorder == $order){
echo "<td bgcolor=$bgcolor><font face='Arial, Helvetica, sans-serif' color='#FFFFFF' size='2'><a href=\"".$_SERVER['PHP_SELF']."?sort=".$linksort."&order=DESC\">".$linksort."</a></font></td>";
} else {
echo "<td bgcolor=$bgcolor><font face='Arial, Helvetica, sans-serif' color='#FFFFFF' size='2'><a href=\"".$_SERVER['PHP_SELF']."?sort=".$linksort."&order=".$linkorder."\">".$linksort."</a></font></td>";
}
}
echo "</tr></table>";[/code]

Ray

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.