数据库结果的PHP排序
我正在使用PHP构建一个数据库检索,我希望能够根据不同的分类对结果进行排序 默认情况下,帖子应该按最新创建到最旧的顺序排列。现在我只想让其他人按升序排列A-Z,但我想同时做A-Z升序和降序数据库结果的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
// 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、 gexample.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)