我正在使用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);
?>
答案 0 :(得分:1)
添加到此查询:
$q = "SELECT Name, Email, Neighborhood, Method, Title, Category, Description, Price, Condit, Photo, Date FROM Listings";
这样:
ORDER BY '$order_by'
在FROM LISTINGS之后
答案 1 :(得分:0)
您所要做的就是将$order_by
与$q
$q.="ORDER BY ";
$q.=$order_by;
并且您的mysql
命令将是这样的
mysqli_query=($con,$q)