PHP排序依据下拉列表

时间:2013-06-14 10:26:37

标签: php html mysql forms

我从这个网站上的类似问题中得到了答案:

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 . '"';

但由于某些原因,如果我选择它们,它不会通过任何一种选择对它们进行排序。

有人可以看到我的代码有任何问题吗?

2 个答案:

答案 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