我试图制作一个基于smarty的简单论坛脚本。
在首页,我希望能够显示每个类别,以及链接到这些类别的论坛。
为此,我的数据库中有两个表,"论坛"和" forums_categories"。
Forums table: +----+---------+-------------+ | id | value | category_id | +----+---------+-------------+ | 1 | Forum 1 | 1 | | 2 | Forum 2 | 2 | | 3 | Forum 3 | 1 | | 4 | Forum 4 | 2 | +----+---------+-------------+ forum_categories table: +----+------------+ | id | value | +----+------------+ | 1 | Category 1 | | 2 | Category 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来获取论坛的)
我的代码出了什么问题?如果有人能帮助我指出正确的方向,我将非常感激。
答案 0 :(得分: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}
但未经过测试。