我从这个网站上的类似问题中得到了答案:
PHP Sort by using drop-down box
并根据我的需要进行调整,但仍然坚持创建一个下拉菜单来按产品分类。
我的表单代码是:
<form name="myform">
<select name="order_by" onchange="if(this.value != '') document.location = '/equipment.php?cat=<?= $prodCategory;?>&subCat=<?=$subCategory;?>&order_by=' + this.value">
<option<?php if(isset($_GET['order_by']) && $_GET['order_by'] == 'choose') echo ' selected="selected"'; ?> value="choose">Sort By</option>
<option<?php if(isset($_GET['order_by']) && $_GET['order_by'] == 'name') echo ' selected="selected"'; ?> value="name">Name</option>
<option<?php if(isset($_GET['order_by']) && $_GET['order_by'] == 'price') echo ' selected="selected"'; ?> value="price">Price</option>
</select>
</form>
我的switch语句和查询如下所示:
switch($_GET['order_by']) {
case 'name':
$order_by = " ORDER BY shortDescription ASC";
break;
case 'price':
$order_by = " ORDER BY rrp ASC";
break;
}
$productQuery = 'SELECT * FROM ********* WHERE subCategory = "' . $subCat[0]['categoryID'] . $order_by . '"';
但由于某些原因,如果我选择它们,它不会通过任何一种选择对它们进行排序。
有人可以看到我的代码有任何问题吗?
答案 0 :(得分:2)
这是因为您有语法错误。您未在'
值之后关闭引用subCategory
。
$productQuery = 'SELECT * FROM ********* WHERE subCategory = "' . $subCat[0]['categoryID'] . $order_by . '"';
//^ here
因此,使用双引号更改引号并正确连接以修复查询
$productQuery = "SELECT * FROM ********* WHERE subCategory = '" . $subCat[0]['categoryID'] . "'" . $order_by;
答案 1 :(得分:1)
您需要更改查询部分,并且您得到了正确的答案,而我有另一种解决方案供您排序。
您可以使用Ajax和PHP对所有mySQL数据进行排序。在这种情况下,您不需要刷新页面。只需按照URL Sorting MySQL data using PHP and Ajax