0

我正在尝试基于 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 获得论坛)

我的代码有什么问题?如果有人能帮助我指出正确的方向,我将不胜感激。

4

1 回答 1

0
$forums = array();

在下一个代码之前。

while ($row = mysql_fetch_assoc($result))

并且必须更改论坛的部分

{section name=o loop=$forums}
  {if $forums[o].category_id==$category[i].id}
    <li>{$forums[o].category_id} - {$forums[o].value}</li>
  {/if}
{/section}

但未经测试。

于 2013-07-25T06:22:00.183 回答