J'essaie de permettre aux utilisateurs de trier les requêtes mysql en fonction du nom, du prix, etc. Ce menu déroulant leur donne le pouvoir de le faire, il modifie la clause "ORDER BY" en fonction de ce que l'utilisateur choisit. Il est trois heures ici et je ne peux pas repérer l'erreur:Quel est le problème avec mon code?
<?php
$sortBy = $_POST['sortBy'];
if ($sortBy) {
$priceLowToHigh = $_POST['price-low-to-high'];
$priceHighToLow = $_POST['price-high-to-low'];
$dateMostRecent = $_POST['date-most-recent'];
$dateOldest = $_POST['date-oldest'];
$alphabeticalOrder = $_POST['alphabetical-order'];
if ($priceLowToHigh) {
$sortOrder = "price ASC";
} elseif ($priceHighToLow) {
$sortOrder = "price DESC";
} elseif ($dateMostRecent) {
$sortOrder = "date DESC";
} elseif ($dateOldest) {
$sortOrder = "date ASC";
} elseif ($alphabeticalOrder) {
$sortOrder = "name ASC";
}
} else {
$sortOrder = "date DESC";
}
?>
<form action="" method="post">
<select name="sortBy" onchange="this.form.submit()">
<option>Sort By</option>
<option value="price-low-to-high">Price (low to high)</option>
<option value="price-high-to-low">Price (high to low)</option>
<option value="date-most-recent">Date (most recent)</option>
<option value="date-oldest">Date (oldest)</option>
<option value="alphabetical-order">Alphabetical Order</option>
</select>
</form>
plus tard la clause ORDER BY est utilisée comme ceci:
$query = mysql_query("SELECT * FROM products WHERE category = $categoryId ORDER BY $sortOrder");
L'étiquette de formulaire ne doit-elle pas avoir une valeur pour l'action? Comme le nom de la page actuelle ... Où POSTER? –
Pas nécessairement par défaut sera la page en cours. – spinon