dongtuhe0506
dongtuhe0506
2015-02-12 10:46

单击提交按钮时的PHP排序表

已采纳

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.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • douche1913 douche1913 6年前

    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);
    }
    ?>
    
    点赞 评论 复制链接分享
  • douwei8295 douwei8295 6年前

    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);
    ...
    
    点赞 评论 复制链接分享
  • dqqvravff05370501 dqqvravff05370501 6年前

    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);
    }
    ?>
    
    点赞 评论 复制链接分享
  • dongshedan4672 dongshedan4672 6年前

    Add an ORDER BY clause to the SQL statement in the "table connect information".

    点赞 评论 复制链接分享

相关推荐