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

Dúvida sobre criação de área de comentários em postagens.


jefponte

Pergunta

http://www.gcsufc.com.br/beckuppostagem.php

Eu fiz nesse link um relacionamento de tabelas onde os comentários do forum entram com o ID da postagem. Mas na hora de apresentar os dados, só aparecem as postagem que tem comentário feito.

:blink:

Olha os codigos da apresentação dos dados.

<?php

$query = mysql_query("SELECT novapostagem.*, forum.`comentario` FROM `novapostagem` JOIN `forum` ON novapostagem.`id` = forum.`postagem_id` ORDER BY id desc");

while($mostrar = mysql_fetch_array($query))

{

echo "<div class='post'>";

echo "<h3>" .'<a href="http://www.gcsufc.com.br/postagem.php?titulo='.$mostrar'>http://www.gcsufc.com.br/postagem.php?titulo='.$mostrar['id'].'"> '.$mostrar['titulo'].'</a>' ."<br>". "</h3>";

echo "<small>". $mostrar['data'] . '<br>' . "Postado por: " . $mostrar['autordotexto']. ' em'. '<a href=http://www.gcsufc.com.br/postagem.php? categoria='.$mostrar['categoria].'"> '.$mostrar['categoria'].'</a>' . '</small>'.'<br>' ;

echo $mostrar['corpodamensagem'];

echo '<div class=categ">Faça um comentário<hr>'. $mostrar['comentario]. '<hr>';

echo '</div><br>';

echo '<form action="insertforum.php" method="post" ><input type="hidden" name="postagem_id" Value="' . $mostrar['id'] . '"><textarea name=comentario id=textarea cols=50 rows=2></textarea><br><input type=submit /></form><br>';

echo "</div>";

}

?>

E ele ainda fica repetindo as postagens q possuem mais de um comentário.

Troquei o Order By por Group By e ele parou de repetir os que possuem mais de um comentário, mas mesmo assim ele deveria mostrar todas as postagens, só mostra postagens que possuem um comentário no banco.

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

se for para listar acredito que o melhor seria ter duas pesquisas

while(postagem)
{
    exibir tópico

    pesquisar comentarios do post

    if(existirem)
    {
        while(comentarios)
       {
           exibir comentarios do post
        }

    }
    else
    {
           sem comentarios pode exibir algo como seja o primeiro a comentar
    }

}

Link para o comentário
Compartilhar em outros sites

  • 0

jissa, desculpa, sou um leigo. Eu não sabia que poderia colocar outro wile dentro de um wile. Então eu faço outro query? E essa If(se existirem) Como eu faço? Eu agradeceria se respondesse a essas perguntas. E já agradeço por sua resposta e atenção.

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

  • 0

Isso é so uma lógica basica, faz o while da postagem o que você já tem feito .. é so prestar bem atenção.

coloque para exibir o tópico o conteudo e tudo mais... (você também já fez)

agora faça a pesquisa dos comentarios relacionando o ID do tópico...

EXEMPLO (to usando o ID do tópico para buscar o comentario)

SELECT * FROM comentarios WHERE id = $mostra['id']

If(existirem) // muito simples se existir comentarios faça um while deles como fez do tópico e mostre eles

else (se não)

mostre uam mensagem que não existe comentarios.

mais explicado que isso so se for em aula / curso de PHP basico e suas sintaxes, acredito que se foi você que fez o código acima do teu post, vai entender muito bem como fazer o restante agora.

abs.

Link para o comentário
Compartilhar em outros sites

  • 0

JaguA, desculpa, nunca fiz nenhum curso de PHP. Tudo o que eu sei aprendi com blogs e com o w3schol. Peço perdão a todos se estou fazendo perguntas bestas demais.

O problema não foi resolvido.

O código ficou assim.

<?php

$conexao = mysql_connect("localhost","oreidosl_root","cocacola@12");

$banco = mysql_select_db("oreidosl_csufc", $conexao);

$query2 = mysql_query("SELECT * FROM forum WHERE postagem_id='". $titulo ."' ORDER BY id desc");

$query = mysql_query("SELECT * FROM novapostagem $string $filtrotitulo ORDER BY id desc");

while($mostrar = mysql_fetch_array($query))

{

echo "<div class='post'>";

echo "<h3>" .'<a href="http://www.gcsufc.com.br/postagem.php?titulo='.$mostrar['id'].'"> '.$mostrar['titulo'].'</a>' ."<br>". "</h3>";

echo "<small>". $mostrar['data'] . '<br>' . "Postado por: " . $mostrar['autordotexto']. ' em';

echo '<a href=http://www.gcsufc.com.br/postagem.php?categoria='.$mostrar['categoria].'"> '.$mostrar['categoria'].'</a>' . '</small>'.'<br>' ;

echo $mostrar['corpodamensagem'];

echo '<form action=insertforum.php" method="post" ><input type="hidden" name="postagem_id" Value="' . $mostrar['id] . '"><textarea name=comentario id=textarea cols=50 rows=2></textarea><br><input type=submit /></form><br>';

echo "</div>";

if

{

while($mostrar2 = mysql_fetch_array($query2))

{

echo $mostrar2['data'].'<br>' . $mostrar2['autor']. ': ' . $mostrar2['comentario'] . '<hr>';

}

else

{

echo 'não existem postagens';

}

}

?>

O código apresentou o seguinte erro:

Parse error: syntax error, unexpected '{', expecting '(' in /home/oreidosl/public_html/fcsufc/postagemtestes.php on line 94

(linha 94 é a linha onde está o segundo wile).

Link para o comentário
Compartilhar em outros sites

  • 0

você fez algumas coisas errada ...

primeiro você precisa dar a condição do If, coisa que você não fez...

segundo precisa colcoar o select dentro do primeiro while antes do segundo... é uma consulta que tem que ser feita toda vez que ele buscar uma nova postagem ...

cara tente intender a lógica de como tem que funcionar, depois você escreve o código.. veja bem...

1 - SELECIONO COM O MYSQL_QUERY SELECIONANDO AS POSTAGEM

2 - CRIO UM WHILE PARA PERCORRE TODOS OS CAMPOS E IMPRIMIR AS POSTAGENS

3 - CRIO OUTRO SELECT COM O MYSQL_QUERY SELECIONADOS OS COMENTARIOS TENDO COMO CONDICAO O ID = ID DA POSTAGEM

4 - CRIO UM IF PARA VERIFICAR SE EXISTE COMENTARIOS

5 - SE EXISTE COMENTARIO CRIO UM WHILE PARA PERCORRE TODOS EXISTENTES E MOSTRA-LOS

6 - SE NÃO MOSTRO MENSAGEM QUE NÃO EXISTE COMENTARIO

7 - FECHO O IF

8 - FECHO O SEGUNDO WHILE

9 - FECHO O PRIMEIRO WHILE

10 - CÓDIGO já AKBO.

OBS: para verificar se existe comentario ou não utilize o mysql_num_row que conta a quantidade de registro e retorna em numero então se for mais q 0 existe ... (isso é o que você precisa fazer para criar o seu IF )

Link para o comentário
Compartilhar em outros sites

  • 0

Eu tentei fazer isso, mas ainda continua dando erro.

<?php

$conexao = mysql_connect("localhost","oreidosl_root","senha");

$banco = mysql_select_db("oreidosl_csufc", $conexao);

//1 - SELECIONO COM O MYSQL_QUERY SELECIONANDO AS POSTAGEM

$query = mysql_query("SELECT * FROM novapostagem $string $filtrotitulo ORDER BY id desc");

//2 - CRIO UM WHILE PARA PERCORRE TODOS OS CAMPOS E IMPRIMIR AS POSTAGENS

while($mostrar = mysql_fetch_array($query))

{

echo "<div class='post'>";

echo "<h3>" .'<a href="http://www.gcsufc.com.br/postagem.php?titulo='.$mostrar['id'].'"> '.$mostrar['titulo'].'</a>' ."<br>". "</h3>";

echo "<small>". $mostrar['data'] . '<br>' . "Postado por: " . $mostrar['autordotexto']. ' em';

echo '<a href=http://www.gcsufc.com.br/postagem.php?categoria='.$mostrar['categoria].'"> '.$mostrar['categoria'].'</a>' . '</small>'.'<br>' ;

echo $mostrar['corpodamensagem'];

echo '<form action=insertforum.php" method="post" ><input type="hidden" name="postagem_id" Value="' . $mostrar['id] . '"><textarea name=comentario id=textarea cols=50 rows=2></textarea><br><input type=submit /></form><br>';

echo "</div>";

//3 - CRIO OUTRO SELECT COM O MYSQL_QUERY SELECIONADOS OS COMENTARIOS TENDO COMO CONDICAO O ID = ID DA POSTAGEM

$query2 = mysql_query("SELECT * FROM forum WHERE postagem_id='". $mostrar['id'] ."' ORDER BY id desc");

//4 - CRIO UM IF PARA VERIFICAR SE EXISTE COMENTARIOS

if ($num_rows = mysql_num_rows($query2) > 0);

{

//5 - SE EXISTE COMENTARIO CRIO UM WHILE PARA PERCORRE TODOS EXISTENTES E MOSTRA-LOS

while($mostrar2 = mysql_fetch_array($query2))

{

echo $mostrar2['data'].'<br>' . $mostrar2['autor']. ': ' . $mostrar2['comentario'] . '<hr>';

//6 - SE NÃO MOSTRO MENSAGEM QUE NÃO EXISTE COMENTARIO

else

{

echo 'não existem comentários, quer ser o primeiro a postar?';

}

//7 - FECHO O IF

}

//8 - FECHO O SEGUNDO WHILE

}

//9 - FECHO O PRIMEIRO WHILE

}

//10 - CÓDIGO já AKBO.

?>

Ainda está dando erro:

Parse error: syntax error, unexpected T_ELSE in /home/oreidosl/public_html/fcsufc/postagemtestes.php on line 109

Tentei fazer de outra forma, assim:

<?php

$conexao = mysql_connect("localhost","oreidosl_root","senha");

$banco = mysql_select_db("oreidosl_csufc", $conexao);

//1 - SELECIONO COM O MYSQL_QUERY SELECIONANDO AS POSTAGEM

$query = mysql_query("SELECT * FROM novapostagem $string $filtrotitulo ORDER BY id desc");

//2 - CRIO UM WHILE PARA PERCORRE TODOS OS CAMPOS E IMPRIMIR AS POSTAGENS

while($mostrar = mysql_fetch_array($query))

{

echo "<div class=post'>";

echo "<h3>" .'<a href="http://www.gcsufc.com.br/postagem.php?titulo='.$mostrar['id].'"> '.$mostrar['titulo'].'</a>' ."<br>". "</h3>";

echo "<small>". $mostrar['data'] . '<br>' . "Postado por: " . $mostrar['autordotexto']. ' em';

echo '<a href=http://www.gcsufc.com.br/postagem.php?categoria='.$mostrar['categoria].'"> '.$mostrar['categoria'].'</a>' . '</small>'.'<br>' ;

echo $mostrar['corpodamensagem'];

echo '<form action=insertforum.php" method="post" ><input type="hidden" name="postagem_id" Value="' . $mostrar['id] . '"><textarea name=comentario id=textarea cols=50 rows=2></textarea><br><input type=submit /></form><br>';

echo "</div>";

//3 - CRIO OUTRO SELECT COM O MYSQL_QUERY SELECIONADOS OS COMENTARIOS TENDO COMO CONDICAO O ID = ID DA POSTAGEM

$query2 = mysql_query("SELECT * FROM forum WHERE postagem_id='". $mostrar['id'] ."' ORDER BY id desc");

//4 - CRIO UM IF PARA VERIFICAR SE EXISTE COMENTARIOS

if ($num_rows = mysql_num_rows($query2) > 0);

{

//5 - SE EXISTE COMENTARIO CRIO UM WHILE PARA PERCORRE TODOS EXISTENTES E MOSTRA-LOS

while($mostrar2 = mysql_fetch_array($query2))

{

echo $mostrar2['data'].'<br>' . $mostrar2['autor']. ': ' . $mostrar2['comentario'] . '<hr>';

// Fecho o primeiro wile

}

//6 - SE NÃO MOSTRO MENSAGEM QUE NÃO EXISTE COMENTARIO

else

{

echo 'não existem comentários, quer ser o primeiro a postar?';

//fecho o else

}

//7 - FECHO O IF

}

//9 - FECHO O PRIMEIRO WHILE

}

//10 - CÓDIGO já AKBO.

?>

Resposta:

Parse error: syntax error, unexpected T_ELSE in /home/oreidosl/public_html/fcsufc/postagemtestes.php on line 108

Pelo termo else da pra ver que o erro é na linha onde está o else. E aí, JaguA. Eu tentei.

Aqui o link:

http://gcsufc.com.br/postagemtestes.php

Ainda com problema.

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

  • 0

Mas o else eu só posso abrir depois que eu fechar o if, não é??

Então, acho que deveria ficar assim.

Mas mesmo assim está dando erro, na linha do else.

<?php

$conexao = mysql_connect("localhost","oreidosl_root","cocacola@12");

$banco = mysql_select_db("oreidosl_csufc", $conexao);

//1 - SELECIONO COM O MYSQL_QUERY SELECIONANDO AS POSTAGEM

$query = mysql_query("SELECT * FROM novapostagem $string $filtrotitulo ORDER BY id desc");

//2 - CRIO UM WHILE PARA PERCORRE TODOS OS CAMPOS E IMPRIMIR AS POSTAGENS

while($mostrar = mysql_fetch_array($query))

{

echo "<div class='post'>";

echo "<h3>" .'<a href="http://www.gcsufc.com.br/postagem.php?titulo='.$mostrar['id'].'"> '.$mostrar['titulo'].'</a>' ."<br>". "</h3>";

echo "<small>". $mostrar['data'] . '<br>' . "Postado por: " . $mostrar['autordotexto']. ' em';

echo '<a href=http://www.gcsufc.com.br/postagem.php?categoria='.$mostrar['categoria].'"> '.$mostrar['categoria'].'</a>' . '</small>'.'<br>' ;

echo $mostrar['corpodamensagem'];

echo '<form action=insertforum.php" method="post" ><input type="hidden" name="postagem_id" Value="' . $mostrar['id] . '"><textarea name=comentario id=textarea cols=50 rows=2></textarea><br><input type=submit /></form><br>';

echo "</div>";

//3 - CRIO OUTRO SELECT COM O MYSQL_QUERY SELECIONADOS OS COMENTARIOS TENDO COMO CONDICAO O ID = ID DA POSTAGEM

$query2 = mysql_query("SELECT * FROM forum WHERE postagem_id='". $mostrar['id'] ."' ORDER BY id desc");

//4 - CRIO UM IF PARA VERIFICAR SE EXISTE COMENTARIOS

if ($num_rows = mysql_num_rows($query2) > 0);

{

//5 - SE EXISTE COMENTARIO CRIO UM WHILE PARA PERCORRE TODOS EXISTENTES E MOSTRA-LOS

while($mostrar2 = mysql_fetch_array($query2))

{

echo $mostrar2['data'].'<br>' . $mostrar2['autor']. ': ' . $mostrar2['comentario'] . '<hr>';

// Fecho o primeiro wile

}

//7 - FECHO O IF

}

//6 - SE NÃO MOSTRO MENSAGEM QUE NÃO EXISTE COMENTARIO

else

{

echo 'não existem comentários, quer ser o primeiro a postar?';

//fecho o else

}

//9 - FECHO O PRIMEIRO WHILE

}

//10 - CÓDIGO já AKBO.

?>

Link para o comentário
Compartilhar em outros sites

  • 0

Não JaguA, eu fechei o else, mas eu descobri qual era o erro. E você me ajudou muito com essa sua ultima postagem. O problema era no IF.

Você disse: If(condição) {

E eu estava escrevendo:

If(condição);{

Depois que tirei o ponto virgula funcionou.

Veja no link funcionando:

http://gcsufc.com.br/postagemtestes.php

O código corretamente:

$banco = mysql_select_db("oreidosl_csufc", $conexao);

//1 - SELECIONO COM O MYSQL_QUERY SELECIONANDO AS POSTAGEM

$query = mysql_query("SELECT * FROM novapostagem $string $filtrotitulo ORDER BY id desc");

//2 - CRIO UM WHILE PARA PERCORRE TODOS OS CAMPOS E IMPRIMIR AS POSTAGENS

while($mostrar = mysql_fetch_array($query))

{

echo "<div class='post'>";

echo "<h3>" .'<a href="http://www.gcsufc.com.br/postagem.php?titulo='.$mostrar['id'].'"> '.$mostrar['titulo'].'</a>' ."<br>". "</h3>";

echo "<small>". $mostrar['data'] . '<br>' . "Postado por: " . $mostrar['autordotexto']. ' em';

echo '<a href=http://www.gcsufc.com.br/postagem.php?categoria='.$mostrar['categoria].'"> '.$mostrar['categoria'].'</a>' . '</small>'.'<br>' ;

echo $mostrar['corpodamensagem'];

echo '<form action=insertforum.php" method="post" ><input type="hidden" name="postagem_id" Value="' . $mostrar['id] . '">';

echo '<textarea name=comentario id=textarea cols=50 rows=2>';

echo '</textarea><br><input type=submit /></form><br>';

echo "</div>";

//3 - CRIO OUTRO SELECT COM O MYSQL_QUERY SELECIONADOS OS COMENTARIOS TENDO COMO CONDICAO O ID = ID DA POSTAGEM

$query2 = mysql_query("SELECT * FROM forum WHERE postagem_id='". $mostrar['id'] ."' ORDER BY id desc");

//4 - CRIO UM IF PARA VERIFICAR SE EXISTE COMENTARIOS

if ($num_rows = mysql_num_rows($query2) > 0)

{

//5 - SE EXISTE COMENTARIO CRIO UM WHILE PARA PERCORRE TODOS EXISTENTES E MOSTRA-LOS

while($mostrar2 = mysql_fetch_array($query2))

{

echo $mostrar2['data'].'<br>' . $mostrar2['autor']. ': ' . $mostrar2['comentario'] . '<hr>';

// Fecho o primeiro wile

}

//7 - FECHO O IF

}

//6 - SE NÃO MOSTRO MENSAGEM QUE NÃO EXISTE COMENTARIO

else

{

echo 'Sem comentários, quer ser o primeiro a postar?';

//fecho o else

}

//9 - FECHO O PRIMEIRO WHILE

}

//10 - CÓDIGO já AKBO.

?>

Eu adoro esse forum.

Obrigado JaguA e oBrigado Jissa.

Funcionou!!!

Editado por jefponte
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...