Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Daniel Teixeira

Comentários em todas as notícias

Recommended Posts

É o seguinte pessoal... tenho um sistema de comentários, mas não consigo implementar ele em todas as notícias, ele fica um sistema único para todas as notícias, ou seja, qualquer comentário aparece em todas as notícias, como faço para mudar isso? É preciso postar algo aqui?

 

 

Obrigado..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente precisamos saber mais detalhes do que você esta querendo.

 

Pelo que entendi, os comentários aparecem em todas as noticas, mas as pessoas não conseguem digitar o comentario em todas as noticias, é isso? Se não for explique melhor o que esta acontecendo e mostre-nos o codigo que esta usando para melhor podermos lhe ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente precisamos saber mais detalhes do que você esta querendo.

 

Pelo que entendi, os comentários aparecem em todas as noticas, mas as pessoas não conseguem digitar o comentario em todas as noticias, é isso? Se não for explique melhor o que esta acontecendo e mostre-nos o codigo que esta usando para melhor podermos lhe ajudar.

 

É assim: estou com um sistema de notícias, mas ele é universal para todas as notícias, ou seja, se digito o comentáio X na notícia Y, o comentário X vai apaarecer na notícia Y, Z, W etc... quero um sistema para cada notícia que for adicionada no BD..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então nesse caso deve se criar um formulario para inserir os dados (comentarios) e fazelo cadastrar para sua respectiva tabela, tipo:

 

tabela_noticia_1

tabela_noticia_2

E por ai vai, significa que para cada noticia haverá uma tabela independente, dai você jogo o codigo php para buscar essas informações e THARAN! Sua noticia_1(por exemplo) vai mostrar resultados da tabela_noticia_1 e por ai em diante, fazendo todas elas serem independentes umas das outras, sem fazer isso de ser GLOBAL para todas as noticias.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não precisa ser assim.. se apenas adicionar um campo: id_noticia na tabela de comentários.

Criar uma tabela para cada notícia acredito que seja inviável.

 

Poste o SQL das suas tabelas, e como você faz a consulta para trazer os comentários.

Compartilhar este post


Link para o post
Compartilhar em outros sites

-- Estrutura da tabela `videos`
--

CREATE TABLE IF NOT EXISTS `videos` (
  `nid` int(25) NOT NULL AUTO_INCREMENT,
  `titulo` varchar(255) NOT NULL,
  `chamada` text NOT NULL,
  `video` varchar(300) DEFAULT NULL,
  `imagem` varchar(300) DEFAULT NULL,
  `data` varchar(50) NOT NULL,
  `hora` varchar(50) NOT NULL,
  PRIMARY KEY (`nid`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;

 

 

-- Estrutura da tabela `video_comentarios`
--

CREATE TABLE IF NOT EXISTS `video_comentarios` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(80) NOT NULL,
  `email` varchar(80) NOT NULL,
  `comentario` text NOT NULL,
  `status` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

 

<?php

include "config.php";

  $sql = mysql_query("SELECT * FROM video_comentarios WHERE status = 'desbloqueado' ORDER BY id DESC");
  while($rs = mysql_fetch_array($sql)){
	  
	  $nome = $rs['nome'];
	  $email = $rs['email'];
	  $comentario = $rs['comentario'];
	  
	  echo "<strong>Nome: </strong>$nome<br>";
	  echo "<strong>E-mail: </strong>$email<br>";
	  echo "<strong>Comentario: </strong>$comentario";
	  echo "<br><br><hr><br><br>";
	  
  }
  
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Daniel!

 

Cara, pela estrutura atual, realmente serão mostrados todos os comentários de todas as notícias.

 

Acredito que uma solução viável, seria seguir a dica do William. Tipo, você poderia criar um campo adicional na tabela "video_comentarios", e este ser uma chave estrangeira para "videos".

 

Ou seja, quando você for buscar o comentário de determinado vídeo, a consulta ficaria algo desse tipo:

 

// considerando que "id_video" seria o novo campo e você resgatou id de determinado vídeo
$sql = mysql_query("SELECT * FROM video_comentarios WHERE status = 'desbloqueado' AND id_video='$id' ORDER BY id DESC");

Não sei se seria bem isso, ou se esta seria a melhor forma, mas acredito que já ajude

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não consegui!

Deu o seguinte erro: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\wamp\www\AAA\sistema\mundo\comentario.php on line 47

 

 

Tabela do mysql:

 

$conecta = mysql_query("CREATE TABLE IF NOT EXISTS `mundo` (
  `nid` int(25) NOT NULL auto_increment,
  `titulo` varchar(255) NOT NULL,
  `chamada` text NOT NULL,
  `noticia` text NOT NULL,
  `foto01` varchar(300) default NULL,
  `foto02` varchar(300) default NULL,
  `foto03` varchar(300) default NULL,
  `foto04` varchar(300) default NULL,
  `foto05` varchar(300) default NULL,
  `data` varchar(50) NOT NULL,
  `hora` varchar(50) NOT NULL,
  PRIMARY KEY  (`nid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;") or die(mysql_error());

$conecta = mysql_query("CREATE TABLE IF NOT EXISTS `mundo_comentarios` (
  `id_mundo` INTEGER not null auto_increment,
  `nome` varchar(80) NOT NULL,
  `email` varchar(80) NOT NULL,
  `comentario` text NOT NULL,
  `status` varchar(50) NOT NULL,
  FOREIGN KEY (`id_mundo`) REFERENCES mundo (`nid`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;") or die(mysql_error());

 

Arquivo .php

 

<?php

include "../video/config.php";

$id = $_GET["id_mundo"];

// considerando que "id_video" seria o novo campo e você resgatou id de determinado vídeo
$sql = mysql_query("SELECT * FROM mundo_comentarios WHERE status = 'desbloqueado' AND id_mundo='$id' ORDER BY id DESC");
  
  while($rs = mysql_fetch_array($sql)){
	  
	  $nome = $rs['nome'];
	  $email = $rs['email'];
	  $comentario = $rs['comentario'];
	  
	  echo "<strong>Nome: </strong>$nome<br>";
	  echo "<strong>E-mail: </strong>$email<br>";
	  echo "<strong>Comentario: </strong>$comentario";
	  echo "<br><br><hr><br><br>";
	  
  }
  
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Execute assim:

$sql = "SELECT * FROM mundo_comentarios WHERE status = 'desbloqueado' AND id_mundo={$id} ORDER BY id DESC";
echo $sql.'<br />'
$query = mysql_query( $sql )or die( mysql_error() );

  while($rs = mysql_fetch_array($query)){
nos diga oque retornar, se você não conseguir arrumar sozinho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tu vais ter que remontar a tua estrutura de tabelas...

Aconselho tu fazer uma tabela de nome = noticias

dai com as seguintes colunas...

ID - Titulo - Categoria - Texto - Comentários

Tu vai ter que tratar os dados para salva-los e imprimi-los...

Mas é a estrutura básica...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Execute assim:

$sql = "SELECT * FROM mundo_comentarios WHERE status = 'desbloqueado' AND id_mundo={$id} ORDER BY id DESC";
echo $sql.'<br />'
$query = mysql_query( $sql )or die( mysql_error() );

  while($rs = mysql_fetch_array($query)){
nos diga oque retornar, se você não conseguir arrumar sozinho.

 

Parse error: parse error, expecting `','' or `';'' in D:\wamp\www\AAA\sistema\mundo\comentario.php on line 49

Compartilhar este post


Link para o post
Compartilhar em outros sites

Daniel Teixeira

 

Vou te dar uma dica. SEMPRE interprete as mensagens de erro do PHP. Vejamos:

Parse error: parse error, expecting `','' or `';'' in D:\wamp\www\AAA\sistema\mundo\comentario.php on line 49

 

Veja que o parser está dizendo que falta uma vírgula ou ponto-e-virgula na linha 49. Aí você olha no código e procura... "Onde falta um ponto e vírgula?"

echo $sql.'<br />'
No final desta linha.

 

Assim, você vai conseguir corrigir seus erros, pois em todos os casos, o PHP diz qual é o erro (parse error, falta de ponto e vírgula) e onde ele está (linha 49).

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

você escreveu uma tag html dentro de um bloco php?

poste o código completo. Erros de sintaxe são bem claros, tente resolver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este <html/> está dentro do bloco PHP? Se estiver e você quiser imprimi-lo, tem que imprimir com echo ou então fechar o bloco PHP antes dele.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Comentários com moderação</title>

</head>

 

<body>

<form id="form1" name="form1" method="post" action="../video/cadastrar.php">

<table width="200" border="0">

<tr>

<td>Nome:</td>

<td><label>

<input type="text" name="nome" id="nome" />

</label></td>

</tr>

<tr>

<td>E-mail:</td>

<td><label>

<input type="text" name="email" id="email" />

</label></td>

</tr>

<tr>

<td>Comentário:</td>

<td><label>

<textarea name="comentario" id="comentario" cols="45" rows="5"></textarea>

<br />

<input type="submit" name="cadastrar" id="cadastrar" value="Enviar" />

</label></td>

</tr>

</table>

</form>

 

<hr />

 

<h2>Comentários</h2>

 

<?php

 

include "../video/config.php";

 

$id = $_GET["id_mundo"];

 

// considerando que "id_video" seria o novo campo e você resgatou id de determinado vídeo

//$sql = mysql_query("SELECT * FROM mundo_comentarios WHERE status = 'desbloqueado' AND id_mundo='$id' ORDER BY id_mundo DESC");

 

$sql = "SELECT * FROM mundo_comentarios WHERE status = 'desbloqueado' AND id_mundo={$id} ORDER BY id DESC";

echo $sql.'<br />';

$query = mysql_query( $sql )or die( mysql_error() );

 

while($rs = mysql_fetch_array($query)){

 

while($rs = mysql_fetch_array($sql)){

 

$nome = $rs['nome'];

$email = $rs['email'];

$comentario = $rs['comentario'];

 

echo "<strong>Nome: </strong>$nome<br>";

echo "<strong>E-mail: </strong>$email<br>";

echo "<strong>Comentario: </strong>$comentario";

echo "<br><br><hr><br><br>";

 

}

 

?>

</body>

</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Notice: Undefined index: id_mundo in D:\wamp\www\AAA\sistema\mundo\comentario.php on line 42

SELECT * FROM mundo_comentarios WHERE status = 'desbloqueado' AND id_mundo= ORDER BY id DESC

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY id DESC' at line 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você esqueceu de fechar o primeiro bloco while, é comun dar esse erro retornando no final de arquivo ao se esquecer de fechar um bloco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Repito a dica

Vou te dar uma dica. SEMPRE interprete as mensagens de erro do PHP.

 

Leia bem o erro e a query que está sendo executada. Veja se identifica o erro. Não adianta nada qualquer um de nós corrigir o seu código. Você vai continuar cometendo os mesmos erros. Então, é importante que você entenda o que está errado e tente corrigir sozinho, para aprender também. Já adianto: o erro é simples!!!

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.