【问题标题】:relation between categories table and factories table Codeigniter类别表和工厂表之间的关系 Codeigniter
【发布时间】:2013-02-15 18:51:00
【问题描述】:

我在用 CodeIgniter 说话

我有一个包含三个表的数据库,分别称为类别、工厂和工厂类别

在我的类别表中,我有以下行:

idCategories
Categorie
idFactories

在我的工厂表中,我有以下行:

idFactories
Factoryname
Postcode
Country
Telephone number
Email
Website
Profile
Adress

在我的工厂类别中,我有以下行:

id
idFactories
idCategories
Factorycategory

我希望,当我点击下图中的一个类别时,会显示位于该特定类别中的工厂。

工厂可以属于多个类别。

那么当我点击一个类别时,如何在这些表之间建立关系以获得这些结果。

如何使用 mysql 数据库和 phpmyadmin 2.8 进行管理?

我在谷歌上搜索但找不到东西。

【问题讨论】:

  • 一个工厂只能属于一个类别?在这种情况下,您应该将类​​别 ID 保存在您的工厂表中。您现在拥有的是每个类别都属于 一个 工厂。这不可能。
  • 不,我忘了说。我的数据库中有另一个名为 factorycategories 的表。带有 idCategories 和 idFactories。所以也许我必须做点什么?

标签: php mysql codeigniter relation


【解决方案1】:

首先,改变你的数据库设计...

table factories
-----------------
idFactories
idCategories (int) <---- add this field
Factoryname
Postcode
...

然后,查询属于特定类别的工厂。通过链接传递idCategories

创建链接:

// sql to get all categories from the DB
$sql="SELECT * FROM categories ORDER BY Categorie"    

// --- insert your code to pull the data from your DB here ---

// building your links on the left column
// assuming all rows from the sql above are in array $categories 
foreach ($categories as $cat) 
    echo '<a href="thispage.php?id='.$cat['idCategories'].'">'.$cat['Categories'].'</a>';

根据点击的类别显示工厂... 在文件的开头:

if (isset($_GET['id']) && intval($_GET['id'])>0) 
    $id=intval($_GET['id']);
else $id=0;

if ($id>0) {
    $sql="SELECT * FROM factories WHERE idCategories=$id";
    // --- insert your code to pull the data from your DB here ---
    // store all the rows in array $factories
}

输出工厂:

if ($id>0) {
    foreach ($factories as $fac) {
       // code for echoing the data
    }
} else {
    echo "select a category on the left to show the factories...";
}

糟糕,我看到您在问题中更改了类别和工厂之间的关系。基本上,技术是相同的,只是 sql 会改变。

【讨论】:

  • 非常感谢。会试试这个。并且从不知道如何以正确的方式做到这一点。
  • 是的,但我对 codeigniter 很陌生,所以你的代码让事情变得清晰。这在学习过程中很好
  • @KeesSonnema 需要补充的是,我们的两个解决方案都与 CodeIgniter 无关,只是 SQL 和常规 PHP 代码。
  • @h2ooooooo: 是的,我什至不知道这个工具
  • 它看起来有点像你的 php michi。但这并不完全正确。所以我想我必须等待与 codeigniter 相关的答案
【解决方案2】:

您可能正在寻找INNER JOIN

SELECT
    fa.idFactories,
    fa.Factoryname,
    fa.Postcode,
    fa.Country,
    fa.Telephonenumber,
    fa.Email,
    fa.Website,
    fa.Profile,
    fa.Adress,
    fc.Factorycategory,
    ca.Categorie
FROM
    `factories` as `fa`
INNER JOIN
    `factorycategories` as `fc`
ON
    fa.idFactories = fc.idFactories
INNER JOIN
    `categories` as `ca`
ON
    ca.idCategories = fc.idCategories
WHERE
    ca.Categorie = 'MyCategory'

【讨论】:

  • 谢谢会试试这个。当我对此有疑问时,我也可以问你吗?
  • @KeesSonnema 您应该向整个 StackOverflow 提出任何问题 - 我们都在这里单独提供帮助,我们大多数人都希望在自己的时间继续这样做。我可以向你保证,这个查询非常基础,任何了解 MySQL 的人(大多数 MySQL StackOverflow 人员)都可以帮助你。
猜你喜欢
  • 1970-01-01
  • 2016-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多