0

我尝试创建一个菜单系统,并在该菜单中根据一列显示 MySQL 中的任何内容!

例子

目前,我可以从我的管理面板添加产品,并将其添加到 MySQL 数据库中。当我添加一个产品时,我可以给这个产品一个品牌名称,即柴油、李维斯等。

问题 1

现在我知道如何通过使用在 PHP 文件中显示 MySQL 中数据库的内容SELECT brand FROM products ...,但这将在我的菜单中显示所有重复的品牌(例如 3 列维,6 个柴油),并且显示如下:

列维列维列维 柴油机 柴油机 柴油机
_
_ _



但我每个只需要 1 个。我怎样才能做到这一点?

问题 2

我如何才能将柴油类别仅与具有该品牌的产品联系起来?例如,如果有人点击柴油类别,php 将只显示具有柴油品牌的产品。

4

3 回答 3

5

这些是相当简单的关系数据库问题。

1个;DISTINCT与您的查询一起使用

SELECT DISTINCT `brand` FROM `products`;

2;您需要使用一个子句,基于您以某种方式WHERE传入的参数。category.php如果没有现有的代码,我们真的无法帮助您,但这应该是一个文件category.php无论如何都会做的事情。

也就是说,您的品牌实际上应该包含在一个单独的表中并与您的产品链接(可能是一对多关系,一个产品可以有一个品牌,但一个品牌可以有很多产品)。在我看来,在继续你的项目之前,你真的应该查阅一些数据库设计概念。


这是您的关系如何运作的非常简单的图表: 简单的关系

而不是查询products您的品牌,您只需SELECT name FROM brand获取您的品牌列表。

然后,传入你的brand_idto category.php,你就可以得到这样的产品SELECT * FROM product WHERE brand_id = 1

于 2013-02-28T21:46:48.497 回答
1

您需要使用一些 SQL。

要获得不同的品牌:

'SELECT DISTINCT brand from products'

获取特定品牌的产品

'SELECT products WHERE brand = "diesel"'

编写第二个查询时要小心,以确保用户不能输入故意有害的数据。使用准备好的语句(PDO / mysqli),例如:

$stmt = $dbh->prepare('SELECT products WHERE brand = :brand');
$stmt->bindParam(':brand', $brand);

我会回应另一个答案,并说您可能想稍微设计一下您的数据库并弄清楚数据是什么以及它与其他数据的关系。

于 2013-02-28T21:48:33.280 回答
1

问题1:您的查询应该是这样的:

Select distinct brand from products

问题2 :

您应该将品牌发送到 category.php 页面:

例如链接应该是这样的:

category.php?brand=disel

然后在 category.php 页面上,您应该像这样更改您的查询:

    if(isset($_GET['brand']))

        mysql_query("select * from products where brand='".$_GET['brand']."'");
    else
        mysql_query("select * from products");

最好将您的品牌 ID 而不是品牌字符串发送到 category.php,因为查询具有更好的性能。

于 2013-02-28T21:50:23.077 回答