smarty に基づいて、簡単なフォーラム スクリプトを作成しようとしています。
フロント ページには、すべてのカテゴリと、それらのカテゴリにリンクされたフォーラムを表示できるようにしたいと考えています。
このために、データベースに "forums" と "forums_categories" という 2 つのテーブルがあります。
フォーラム表: +----+---------+-------------+ | | ID | 値 | カテゴリ ID | +----+---------+-------------+ | | 1 | フォーラム 1 | 1 | | | 2 | フォーラム 2 | 2 | | | 3 | フォーラム 3 | 1 | | | 4 | フォーラム 4 | 2 | +----+---------+-------------+ forum_categories テーブル: +----+------------+ | | ID | 値 | +----+------------+ | | 1 | カテゴリー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
(Category 1 で、category_id が 1 ではなく 2 のフォーラムを取得していることに注意してください)
コードの何が問題になっていますか? 誰かが私を正しい方向に向けるのを助けることができれば、私は最も感謝しています.