Реализация простенького форумчика с применением Smarty. Как сделать оптимальнее

-faqer-

Я только учусь
Реализация простенького форумчика с применением Smarty. Как сделать оптимальнее

Философия форума такова.
Он представляет собой таблицу из двух колонок: слева вопросы, спава ответы. Причем ответов на один вопрос может быть несколько.

Вопросы |Ответы|
|1|1.1
| |1.2
| |1.3
__________
|2|
_________
|3|3.1
_________
|4|4.1
| |4.2
_________
Необходиомы вытянуть все данные из базы, уложить в массив, потом передать его в шаблон смарти

НА данный момент реализовал это следующим образом
три таблицы
messsages
|id|message|author
answers
|id|message_id|answer|author
users
|id|name

PHP:
$t1 = 'messages';
$t2 = 'answers';
$t3 = 'users'
\\Выбираю все вопросы и имена их авторов
$messages = $db -> query ("SELECT ".$t1.".*, ".$t3.".name  FROM ".$t1.", ".$t3." WHERE ".$t1.".author = ".$t3.".id ORDER BY ".$t1.".id DESC");
$forum = array ();
while ($m = $db -> fetch_array ($messages)) {
    $i = $m ['id'];
    $forum [$i] ['id'] = $i;
    $forum [$i] ['message'] = $m ['message'];
    $forum [$i] ['name'] = $m ['name'];
    unset ($answers);
    unset ($a);
    //выбираю все ответы на данный пост и мена авторов
    $answers = $db -> query ("SELECT ".$t2.".*, ".$t3.".name FROM ".$t2.", ".$t3." WHERE ".$t2.".message_id = ".$i." AND ".$t2.".author = ".$t3.".id ORDER BY ".$t2.".id DESC");
    while ($a = $db -> fetch_array ($answers)) {
        $j = $a ['id'];
        $forum [$i] ['answers'] [$j] ['id'] = $j;
        $forum [$i] ['answers'] [$j] ['answer'] = $a ['answer'];
        $forum [$i] ['answers'] [$j] ['name'] = $a ['name'];

    }
}

$tpl -> assign ('rows', $forum);
$tpl -> display ('forum_messages.tpl');



//содержимое шаблона
<table width="99%" border="1">
{foreach from=$rows item=row}
  <tr>
    <td>{$row.id}<br>{$row.message}<br>{$row.name}</td>
    <td>{foreach from=$row.answers item=a}
	{$a.id}<br>{$a.answer}<br>{$a.name}<hr>
	{/foreach}</td>
  </tr>
{/foreach}
</table>
Никогда мне не нравились вложенные циклы.
Как еще можно реальзовать этот метод, набить массив.

-~{}~ 05.08.05 01:06:

???
 
Сверху