0

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 のフォーラムを取得していることに注意してください)

コードの何が問題になっていますか? 誰かが私を正しい方向に向けるのを助けることができれば、私は最も感謝しています.

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 に答える