搜索多个类别的产品

时间:2018-12-05 17:59:00

标签: php mysql

我具有带有类别的搜索功能,当您单击该类别时,您将在该类别中进行搜索,但是我想这样做,以便能够在多个类别中搜索关键字。这是我的表格:

        <form method="get" action="zoek.php">
            <input type="text" name="producttitle" placeholder="Productnaam">
            <input type="hidden" name="prodgroup" value="<?= (isset($_GET['prodgroup'])) ? $_GET['prodgroup'] : '' ?>">
            <input type=submit class="btn btn-primary" value="Zoek...">
        </form>

这是您单击类别并搜索单词的代码

      <?php
    if (isset($_GET['prodgroup']) && $_GET['prodgroup'] != "" && isset($_GET['producttitle']) && $_GET['producttitle'] != "") {
        $category = $_GET['prodgroup'];
        $prodtit = $_GET['producttitle'];


        $query = $readconn->prepare("
SELECT S.StockItemID, S.StockItemName, S.Photo, S.UnitPrice, S.Photo, S.Brand
FROM stockitems S JOIN stockitemstockgroups SISG ON S.StockItemID = SISG.StockItemID
JOIN stockgroups SG ON SISG.StockGroupID = SG.StockGroupID
WHERE SG.StockGroupID = '" . $category . "'
AND S.StockItemName LIKE '%" . $prodtit . "%'
");

这些是具有其ID的类别:

.--------------.---------------------. | StockGroupID | Col2 | :--------------+---------------------: | 1 | Novelty Items | :--------------+---------------------: | 2 | Clothing | :--------------+---------------------: | 3 | Mugs | :--------------+---------------------: | 4 | T-Shirts | :--------------+---------------------: | 5 | Airline Novelties | :--------------+---------------------: | 6 | Computing Novelties | :--------------+---------------------: | 7 | USB Novelties | :--------------+---------------------: | 8 | Furry Footwear | :--------------+---------------------: | 9 | Toys | :--------------+---------------------: | 10 | Packaging Materials | '--------------'---------------------'

此表包含所有项目,如您所见,有些项目可以归为多个类别。

.-----------------------.--------------. | StockItemStockGroupID | StockGroupID | :-----------------------+--------------: | 4 | 1 | :-----------------------+--------------: | 1 | 2 | :-----------------------+--------------: | 2 | 2 | :-----------------------+--------------: | 3 | 3 | :-----------------------+--------------: | 5 | 4 | :-----------------------+--------------: | 6 | 7 | :-----------------------+--------------: | 8 | 7 | :-----------------------+--------------: | 7 | 8 | :-----------------------+--------------: | 9 | 9 | :-----------------------+--------------: | 10 | 2 | '-----------------------'--------------'

这也是另一个具有所有项目名称的表,因此我可以基于关键字进行搜索。但是我认为我不需要这里。因此,我试图做的就是将WHERE语句更改为这样的IN:

WHERE SG.StockGroupID IN (SELECT StockGroupID FROM stockitemstockgroups) 但是它仍然不会包含多个类别。这是网址

http://localhost/kbs/zoek.php?producttitle=pizza&prodgroup=1

虽然我认为应该是这样的:

http://localhost/kbs/zoek.php?producttitle=pizza&prodgroup=1&prodgroup=2

1 个答案:

答案 0 :(得分:0)

我认为您应该将查询的where部分转换为类似

WHERE SG.StockGroupID IN (" . $categories . ") ...

其中$ categories应该是创建的类似“ 1,2,4”的字符串 使用允许用户选择所需类别的UI。