Я строю поиск базы данных с использованием PHP, и я хочу иметь возможность сортировать результаты на основе их разных классификаций.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);
?>
вам нужно два параметра, а затем: один для поля для сортировки, и еще один для направления. например 'example.com/script.php & field = condit & direction = desc' –
@MarcB Я что-то упустил? он может просто добавить порядок в $ order_by к запросу ... У него уже есть эта строка – baao
@michael: «но хотелось бы сделать оба восходящего нисходящего». либо у вас есть два параметра, либо вы удваиваете количество вариантов, поэтому у вас есть 'foo asc' и' foo desc'. в любом случае, вы удваиваете ЧТО-ТО. –