我正在尝试基于 smarty 制作一个简单的论坛脚本。
在首页我希望能够显示每个类别,以及链接到这些类别的论坛。
为此,我的数据库中有两个表,“forums”和“forums_categories”。
论坛表: +----+----------+-------------+ | 编号 | 价值 | 类别 ID | +----+----------+-------------+ | 1 | 论坛1 | 1 | | 2 | 论坛二 | 2 | | 3 | 论坛3 | 1 | | 4 | 论坛4 | 2 | +----+----------+-------------+ forum_categories 表: +----+------------+ | 编号 | 价值 | +----+------------+ | 1 | 第一类 | | 2 | 类别 2 | +----+------------+
这是我的 PHP 代码
$sql = "SELECT * FROM `forums_categories` ORDER BY `id` ASC";
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0)
{
$category = array();
while ($row = mysql_fetch_assoc($result))
{
$cat_id = $row['id'];
$category[] = $row;
# Get forums
$sql2 = "SELECT * FROM `forums` WHERE category_id='$cat_id'";
$result2 = mysql_query($sql2);
$forums = array();
while ($row2 = mysql_fetch_assoc($result2))
{
$forums[] = $row2;
}
}
}
$smarty->assign('category', $category);
$smarty->assign('forums', $forums);
这就是我的 forum.tpl 文件中的内容。
{section name=i loop=$category}
<li>{$category[i].id} - {$category[i].value}</li>
{section name=o loop=$forums}
<li>{$forums[o].category_id} - {$forums[o].value}</li>
{/section}
{/section}
我想得到这个:
1 - 类别 1
1 - 论坛 1
1 - 论坛 3
2 - 类别 2
2 - 论坛 2
2 - 论坛 4
但相反,我得到了这个:
1 - 类别 1
2 - 论坛 2
2 - 论坛 4
2 - 类别 2
2 - 论坛 2
2 - 论坛 4
(请注意,在类别 1 上,我如何使用 category_id 2 而不是 1 获得论坛)
我的代码有什么问题?如果有人能帮助我指出正确的方向,我将不胜感激。