Jump to content
Fórum Script Brasil
  • 0

Pura Lógica


fambo
 Share

Question

Ola a todos!!!

Bom...já estou o dia todo "brincando" aqui no meu sisteminha que estou desenvolvendo....e gostaria de descobrir a melhor forma de organizar as mensagens de um tópico do fórum.

A tabela do banco está assim:

id idTopico mensagem sub

1-----1---------teste1------0

2-----1---------teste2------1

3-----1---------teste3------1

4-----1---------teste4------0

Bom.....como no fórum do scriptbrasil, no meu posso também responder a uma mensagem especifica, com isso esta nova resp. deve aparecer exatamente abaixo da mensagem respondida. Por isso criei o campo "sub" (este campo indica o id da mensagem respondida, quando for igual a zero (0) é porque a mensagem postada responde ao tópico - mensagem principal ).

O código abaixo (simplificado) me lista toda as mensagens de um tópico especifico (Ex: 1) ordenado pelo "ID"

<?
$sql = "select id,mensagem, from mensagemForum where idTopico = '1' order by id";
$result = mysql_query($sql);
while ($linha = mysql_fetch_array($result)){
$vid = $linha["0"];
$vdescricao = $linha["1"];
?>


<table>
<tr> 
<td > 
          <? echo nl2br($vdescricao); ?>
</td>
</tr>
</table>

<?
}
?>

alguém tem alguma sugestão dentro dessa estrutura que informei para que a listagem não seja ordenada somente pelo "ID" e sim hierarquicamente, tipo as mensagens e abaixo de cada uma, suas sub-mensagens (resposta).

Valeu galera!!!

FB

Edited by fambo
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Não entendi direito o funcionamento do campo sub. Ele indica se é uma resposta a um tópico, mas como ele funciona, pois há dois registros com o valor 0 e dois com o valor 1?

Eu reestruturaria esse banco de dados desta forma:

tabela topicos: contém somente o ID do tópico, título e outros dados que você queira que sejam armazenados

Tabela mensagens: tabela ligada à tabela tópicos por meio do id do tópico. Essa tabela conterá todas as mensagens, inclusive a primeira do tópico. O ID auto_increment definiria qual é a ordem que as mensagens de um tópico serão exibidas.

Dessa forma fica mais organizado. ;)

Abraços,

Beraldo

Link to comment
Share on other sites

  • 0

Opa..bakana....

Só no fórum pode acontecer de você querer responder apenas uma resposta, dai o sistema na hora de listar as mensagens vai t que colocar esta resposta embaixo da mensagem respondida, para ficar melhor organizado.

O campo sub, faz o seguinte, os campos que são = 0 (zero) são mensagens principais do tópico, já os diferentes de 0 (zero) indica de qual mensagem ele é uma resposta.

rsrsrrsrsrs....isso é muito louco....

abraço..

Link to comment
Share on other sites

  • 0

Mas nessa sua tabela há dados de um só tópico (id = 1), mas contém mais de um registro com o sub = 0. Isso não deveria ocorrer, certo?

Por exemplo, neste tópico em que estamos conversando, seu primeiro post teria o sub = 0 e todos os demais com sub = 1, confere? Se for da forma como estou pensando, o ID auto_increment coloca as respostas na ordem adequada.

Link to comment
Share on other sites

  • 0

Opa, desculpe a demora pra responder....viajei para um interior que não tinha internet...

Observem este outro exemplo abaixo(tabela -> mensagem):

ordenado por id (auto_increment)

id idTopico mensagem sub

1-----1---------teste1------0

2-----1---------teste2------1

3-----1---------teste3------0

4-----1---------teste4------1

ordenado da forma correta

id idTopico mensagem sub

1-----1---------teste1------0

2-----1---------teste2------1

4-----1---------teste4------1

3-----1---------teste3------0

Obs: O campo sub está vinculado ao id da mesma tabela, ele indica de qual mensagem ele é uma sub(resposta). Quando o valor do campo sub = 0, significa que o mesmo é uma resposta do tópico e não de uma mensagem especifica.

Se eu adicionasse uma msgm com o sub = 2, ele ficaria embaixo da mensagem com id = 2.(Essa é a ordem correta.)

Vixi...tomara que eu tenha conseguido explicar...hehehehehe...é muito complicado.

Abraço,

Fabricio Boaventura

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.1k
    • Total Posts
      647k
×
×
  • Create New...