数据库结果的PHP排序

数据库结果的PHP排序,php,database,sorting,Php,Database,Sorting,我正在使用PHP构建一个数据库检索,我希望能够根据不同的分类对结果进行排序 默认情况下,帖子应该按最新创建到最旧的顺序排列。现在我只想让其他人按升序排列A-Z,但我想同时做A-Z升序和降序 <?php // Determine the sort... // Default is by registration date. $sort = (isset($_GET['sort'])) ? $_GET['sort'] : 'sort_date'; // Determine the sort

我正在使用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"; 
这:


在FROM LISTINGS

之后,您只需将
$order\u by
$q

$q.="ORDER BY ";
$q.=$order_by;
您的
mysql
命令如下

mysqli_query=($con,$q) 

那么,您需要两个参数:一个用于要排序的字段,另一个用于方向。e、 g
example.com/script.php&field=condit&direction=desc
@MarcB我遗漏了什么吗?他只需在查询中添加orderby“$order\u by”。。。他有这根绳子already@michael:“但我想同时做升序和降序”。要么有两个参数,要么将选项的数量加倍,这样就有了
foo asc
foo desc
。不管怎样,你都在加倍努力。@MarcB你的名声让我觉得你是对的…:-)但是他编写的开关中只有ASC选项,所以我认为他想对date DESC和ASC进行排序(就像在开关和代码的其余部分中一样),其余部分只排序ASC。嗯,会是什么?
mysqli_query=($con,$q)