1

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

PHP 使用下拉框排序

并根据我的需要对其进行了调整,但一直坚持创建一个下拉菜单来对产品进行排序。

我的表单代码是:

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

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

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

4

2 回答 2

2

这是因为您有语法错误。您不是在价值'后关闭报价subCategory

$productQuery = 'SELECT * FROM ********* WHERE subCategory = "' . $subCat[0]['categoryID'] . $order_by . '"';
                                                                                         //^ here 

因此,用双引号更改引号并正确连接以修复您的查询

$productQuery = "SELECT * FROM ********* WHERE subCategory = '" . $subCat[0]['categoryID'] . "'" .  $order_by;
于 2013-06-14T10:29:43.090 回答
1

您被要求更改查询部分并且您得到了正确的答案,而我为您的排序提供了另一种解决方案。

您可以使用 Ajax 和 PHP 对所有 mySQL 数据进行排序。在这种情况下,您不需要刷新页面。只需按照 URL Sorting MySQL data using PHP and Ajax

于 2013-06-14T10:54:43.437 回答