Reputation: 29
I want to be able to sort my table as ASC in a field when the submit button is clicked.
I have used an array function to get the information from a SQL database, I have tried making a sort function but when I click 'submit' nothing happens.
This is my attempt of creating the submit button:
<h1> Courses </h1>
<form name="Table Properties" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
Order by Week
<button type="submit" name="week" class="button" <?php echo $value='1'; ?>"> Sort Week </button>
</form>
<?php
if(isset($_POST['week'])){
$query="SELECT * FROM `classes` ORDER BY `classes`.`week` ASC";
}
When I click submit the table remains the same.
Here is my table connect information
$con = mysql_connect("host", "username", "password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("username", $con);
$sql = "SELECT * FROM `classes`";
$myData = mysql_query($sql, $con);
echo "<table border=1>
<tr>
<th> Name 1 </th>
<th> Name 2 </th>
<th> Name 3 </th>
<th> Name 4 </th>
</tr>";
while ($record = mysql_fetch_array($myData)){
echo "<tr>";
echo"<td>" . $record['name 1'] . "</td>";
echo"<td>" . $record['week'] . "</td>";
echo"<td>" . $record['name 3'] . "</td>";
echo"<td>" . $record['name 4'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($con);
}
?>
I asked a similar question in the past but I think they misunderstood due to lack of full information.
Upvotes: 0
Views: 2880
Reputation: 821
You define your action, when the submit button is pressed, but don't actually use it. You don't need the php
part after your form.
Try to edit your table connect information:
...
mysql_select_db("username", $con);
if(isset($_POST['week'])){
$sql="SELECT * FROM `classes` ORDER BY `classes`.`week` ASC";
}
else{
$sql = "SELECT * FROM `classes`";
}
$myData = mysql_query($sql, $con);
...
Upvotes: 0
Reputation: 567
try this code
$con = mysql_connect("host", "username", "password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("username", $con);
$sql = "SELECT * FROM `classes`";
if(isset($_POST['week'])){
$sql="SELECT * FROM `classes` ORDER BY `classes`.`week` ASC";
}
$myData = mysql_query($sql, $con);
echo "<table border=1>
<tr>
<th> Name 1 </th>
<th> Name 2 </th>
<th> Name 3 </th>
<th> Name 4 </th>
</tr>";
while ($record = mysql_fetch_array($myData)){
echo "<tr>";
echo"<td>" . $record['name 1'] . "</td>";
echo"<td>" . $record['week'] . "</td>";
echo"<td>" . $record['name 3'] . "</td>";
echo"<td>" . $record['name 4'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($con);
}
?>
Upvotes: 0
Reputation: 929
You have to alter your original query.
$sql = "SELECT * FROM classes";
Let's summarize :
Your form :
<h1> Courses </h1>
<form name="Table Properties" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
Order by Week
<button type="submit" name="week" class="button" <?php echo $value='1'; ?>"> Sort Week </button>
</form>
When you submit :
<?php
$orderString = ''; // default
if (isset($_POST['week'])){
$orderString = "`classes`.`week` ASC";
}
Your display :
$con = mysql_connect("host", "username", "password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("username", $con);
$sql = "SELECT * FROM `classes`";
// now check order
if ($orderString !== '') {
// Concatenate
$sql .= ' ORDER BY ' . $orderString;
}
$myData = mysql_query($sql, $con);
echo "<table border=1>
<tr>
<th> Name 1 </th>
<th> Name 2 </th>
<th> Name 3 </th>
<th> Name 4 </th>
</tr>";
while ($record = mysql_fetch_array($myData)){
echo "<tr>";
echo"<td>" . $record['name 1'] . "</td>";
echo"<td>" . $record['week'] . "</td>";
echo"<td>" . $record['name 3'] . "</td>";
echo"<td>" . $record['name 4'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($con);
}
?>
Upvotes: 1
Reputation: 31685
Add an ORDER BY
clause to the SQL statement in the "table connect information".
Upvotes: 0