PHP数据库结果排序


PHP Sorting of Database Results

我正在使用PHP构建数据库检索,我希望能够根据不同的分类对结果进行排序。

默认情况下,帖子应该按最近创建的帖子到最旧的帖子的顺序排列。现在,我只是想让其他人按升序对A-Z进行排序,但我想同时进行A-Z的升序和降序。

<?php
// Determine the sort...
// Default is by registration date.
$sort = (isset($_GET['sort'])) ? $_GET['sort'] : 'sort_date';
// Determine the sorting order:
switch ($sort) {
    case 'sort_neighborhood':
        $order_by = 'Neighborhood ASC';
        break;
    case 'sort_method':
        $order_by = 'Method ASC';
        break;
    case 'sort_category':
        $order_by = 'Category ASC';
        break;
    case 'sort_price':
        $order_by = 'Price ASC';
        break;
    case 'sort_condition':
        $order_by = 'Condit ASC';
        break;
    case 'sort_date':
        $order_by = 'Date ASC';
        break;
    default:
        $order_by = 'Date DESC';
        $sort = 'sort_date';
        break;
}
// Connects to your Database
$con = mysqli_connect('localhost', 'admin', 'password', 'Listings') OR die ('Could not connect to MySQL: ' . mysqli_connect_error() );
$q = "SELECT Name, Email, Neighborhood, Method, Title, Category, Description, Price, Condit, Photo, Date FROM Listings"; 
$r = @mysqli_query ($con, $q); //Run the query.
// Count the number of returned rows:
$num = mysqli_num_rows($r);
if ($num > 0) {
    // Print
    echo '<table align="center">
            <tr>
                <td>Name</td>
                <td>Email</td>
                <td><a href="Retrieve.php?sort=sort_neighborhood">Neighborhood</a></td>
                <td><a href="Retrieve.php?sort=sort_method">Method</a></td>
                <td>Title</td>
                <td><a href="Retrieve.php?sort=sort_category">Category</a></td>
                <td>Description</td>
                <td><a href="Retrieve.php?sort=sort_price">Price</a></td>
                <td><a href="Retrieve.php?sort=sort_condition">Condition</a></td>
                <td>Photo</td>
                <td><a href="Retrieve.php?sort=sort_date">Date</a></td>
            </tr>';
    // Fetch and print all the records:
    while ($row = mysqli_fetch_assoc($r)) {
        $split = explode("/home/xyz/public_html", $row['Photo']);
        $base = $split['0'];
        $src = $split['1'];
        echo '<tr>
            <td align="left">' . $row['Name'] . '</td>
            <td align="left">' . $row['Email'] . '</td>
            <td align="left">' . $row['Neighborhood'] . '</td>
            <td align="left">' . $row['Method'] . '</td>
            <td align="left">' . $row['Title'] . '</td>
            <td align="left">' . $row['Category'] . '</td>
            <td align="left">' . $row['Description'] . '</td>
            <td align="left">' . $row['Price'] . '</td>
            <td align="left">' . $row['Condit'] . '</td>
            <td align="left"><img src=" ' . $src . '"></td>
            <td align="left">' . $row['Date'] . '</td>
        </tr>
        ';
    }
    echo '</table>';
                mysqli_free_result ($r);    
    } else { // If no records were returned.
    echo '<p class="error">There are currently no posts.</p>';
    }
mysqli_close($con); 
?>

添加到此查询:

$q = "SELECT Name, Email, Neighborhood, Method, Title, Category, Description, Price, Condit, Photo, Date FROM Listings"; 

这个:

ORDER BY '$order_by'

在FROM LISTING 之后

您所要做的就是将$order_by$q 连接起来

$q.="ORDER BY ";
$q.=$order_by;

你的mysql命令将像这个

mysqli_query=($con,$q)