Ir para conteúdo
Fórum Script Brasil
  • 0

Pura Lógica


fambo

Pergunta

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

Editado por fambo
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...