我想让用户根据名称,价格等对mysql查询进行排序。这个下拉菜单让他们有能力做到这一点,它根据用户选择的内容更改“ORDER BY”子句。这是凌晨3点在这里,我只是不能看出错误:我的代码有什么问题?
<?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>
后来在ORDER BY子句中使用这样的:
$query = mysql_query("SELECT * FROM products WHERE category = $categoryId ORDER BY $sortOrder");
不应该表单标签有一个值的行动?像当前页面的名称一样...发布到哪里? – 2010-07-03 06:13:49
不一定,因为默认值是当前页面。 – spinon 2010-07-03 06:14:14