类别表和工厂表之间的关系Codeigniter

时间:2013-03-01 09:54:26

标签: php mysql codeigniter relation

我正在使用CodeIgniter

我有一个包含三个表的数据库,名为categories,factory和factorycategories

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

idCategories
Categorie
idFactories

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

idFactories
Factoryname
Postcode
Country
Telephone number
Email
Website
Profile
Adress

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

id
idFactories
idCategories
Factorycategory

我希望,当我点击下面图片中显示的类别时,工厂会出现在该特定类别中。

工厂可以属于多个类别。

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

example

我如何使用mysql数据库和phpmyadmin 2.8管理它?

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

2 个答案:

答案 0 :(得分: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会改变。

答案 1 :(得分:0)

您可能正在寻找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'