我正在使用CodeIgniter
我有一个包含三个表的数据库,名为categories,factory和factorycategories
在我的类别表中,我有以下行:
idCategories
Categorie
idFactories
在我的工厂表中,我有以下几行:
idFactories
Factoryname
Postcode
Country
Telephone number
Email
Website
Profile
Adress
在我的工厂类别中,我有以下几行:
id
idFactories
idCategories
Factorycategory
我希望,当我点击下面图片中显示的类别时,工厂会出现在该特定类别中。
工厂可以属于多个类别。
那么当我点击某个类别时,如何在这些表之间建立关系以获得这些结果。
我如何使用mysql数据库和phpmyadmin 2.8管理它?
我在谷歌搜索但找不到东西。
答案 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'