-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
Никогда мне не нравились вложенные циклы.
Как еще можно реальзовать этот метод, набить массив.
-~{}~ 05.08.05 01:06:
???
Философия форума такова.
Он представляет собой таблицу из двух колонок: слева вопросы, спава ответы. Причем ответов на один вопрос может быть несколько.
Вопросы |Ответы|
|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:
???