【问题标题】:Sorting SQL table using PHP使用 PHP 对 SQL 表进行排序
【发布时间】:2017-08-20 19:34:03
【问题描述】:

我在使用 PHP 对表格进行排序时遇到问题。我只是想弄清楚如何制作可以按标准对表格进行排序而不损坏代码的按钮。标准是按升序和降序对“价格”、“艺术家名称”和“专辑名称”三列进行排序。我期待着意见,我会感谢任何提示。

<?php
$con = mysqli_connect("", "", "", "");
if (!$con) {
die("Error: " . mysqli_connect_error());
}
$mysqlget = "SELECT * FROM Albums";
$mysqldata = mysqli_query($con, $mysqlget) or die ("Error: " . mysql_error($con));

echo "<table class='table_albums'>";
echo "<tr><th>Album</th><th>Description</th><th>Artist</th><th>Price</th><th colspan='2'>Additional Options</th></tr>";

while ($row = mysqli_fetch_array($mysqldata, MYSQLI_ASSOC)) {

echo "<tr><td>";
echo "<img class='album_artwork' src='";
echo $row['AlbumImage'];
echo "'></td><td><p class='info_album_artist'>";
echo $row['Info'];
echo "<p></td><td>";
echo "<img class='artist_artwork' src='";
echo $row['ArtistImage'];
echo "'></td><td><p class='info_album_artist'>&pound;";
echo $row['Price'];
echo "<p></td><td>";
echo "<a href='";
echo $row['MoreInfo'];
echo "' class='more_info'>More Info</a></td><td>";
echo $row['Buy'];
echo "</td></tr>";

}

echo "</table>";
?>

【问题讨论】:

  • 可以在查询中排序。您可以使用sort()等使用PHP进行排序。如果您拥有所有数据,您可以在客户端进行排序。
  • 取决于您要按"SELECT * FROM Albums ORDER BY Price DESC"排序的内容
  • 是的,我知道这些建议,但我想以不应该出现错误的适当方式实施它们。
  • @Niksan555 你还在吗?
  • @mkaatman “你可以用 PHP 使用 sort() 等进行排序” 那太愚蠢了。数据库经过优化,可以尽可能快速有效地对事物进行排序。即使是快速排序也无法击败哈希图。

标签: php html mysql sorting


【解决方案1】:

你可以选择所有选项

<form method="post" action="">
<select name="sort" onchange="this.form.submit()">
    <option>Order by ...</option>
    <option value="price_desc">Price descending</option>
    <option value="price_asc">Price ascending</option>
    <option value="artist_name_desc">Artist Name descending</option>
    <option value="artist_name_asc">Artist Name ascending</option>
    <option value="album_name_desc">Album Name descending</option>
    <option value="album_name_asc">Album Name ascending</option>
</select>
</form>

<?php

$sort = $_POST['sort'];

if ($sort == 'price_desc')
{
    $mysqlget = "SELECT * FROM Albums ORDER BY Price DESC";
}
else if ($sort == 'price_asc')
{
    $mysqlget = "SELECT * FROM Albums ORDER BY Price ASC";
}
else if ($sort == 'artist_name_desc')
{
    $mysqlget = "SELECT * FROM Albums ORDER BY ArtistName DESC";
}
else if ($sort == 'artist_name_asc')
{
    $mysqlget = "SELECT * FROM Albums ORDER BY ArtistName ASC";
}
else if ($sort == 'album_name_desc')
{
    $mysqlget = "SELECT * FROM Albums ORDER BY AlbumName DESC";
}
else if ($sort == 'album_name_asc')
{
    $mysqlget = "SELECT * FROM Albums ORDER BY AlbumName ASC";
}
else
{
    $mysqlget = "SELECT * FROM Albums";
}

$mysqldata = mysqli_query($con, $mysqlget) or die ("Error: " . mysql_error($con));

echo "<table class='table_albums'>";
echo "<tr><th>Album</th><th>Description</th><th>Artist</th><th>Price</th><th colspan='2'>Additional Options</th></tr>";

while ($row = mysqli_fetch_array($mysqldata, MYSQLI_ASSOC)) {

echo "<tr><td>";
echo "<img class='album_artwork' src='";
echo $row['AlbumImage'];
echo "'></td><td><p class='info_album_artist'>";
echo $row['Info'];
echo "<p></td><td>";
echo "<img class='artist_artwork' src='";
echo $row['ArtistImage'];
echo "'></td><td><p class='info_album_artist'>&pound;";
echo $row['Price'];
echo "<p></td><td>";
echo "<a href='";
echo $row['MoreInfo'];
echo "' class='more_info'>More Info</a></td><td>";
echo $row['Buy'];
echo "</td></tr>";

}

echo "</table>";

?>

【讨论】:

    【解决方案2】:

    使用 SQL 很容易。示例:

    按信息排序:

    SELECT * FROM Albums ORDER BY Info
    

    降序排列:

    SELECT * FROM Albums ORDER BY Info DESC
    

    要制作对表格进行排序的按钮,我会使用 GET,例如:

    <a href="?orderby=Info">Info</a>
    

    PHP 代码:

    $mysqlget = 'SElECT * FROM Albums';
    
    if (isset($_GET['orderby'])) {
        switch ($_GET['orderby']) {
            case 'Info':
                $mysqlget .= ' ORDER BY Info';
                break;
            case 'Artist':
                $mysqlget .= ' ORDER BY Artist';
                break;
            // ...
        }
    }
    
    $mysqldata = mysqli_query($con, $mysqlget) or die ("Error: " . mysql_error($con));
    

    【讨论】:

    • 能否举个例子,先谢谢了!
    猜你喜欢
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 2013-05-18
    • 2013-01-17
    • 2011-09-30
    • 2010-10-19
    相关资源
    最近更新 更多