Ir para conteúdo

Arquivado

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

Helio Webmaster

Sistema de comentários PHP + MySQL

Recommended Posts

no phpMyAdmin mesmo.

 

1. Entre na base de dados.

2. Quando estiver na tela onde lista todas as tabelas, clique na aba em cima onde está escrito "Exportar"

3. Vai aparecer uma janela com uma lista de todas as tabelas, selecione somente as que fazem parte dos post/artigo e comentario.

4. Tem um campo chamado "Dados" que está selecionado, você desmarca esse campo e clica em Executar no canto inferior direito.

5. Salva o arquivo.

6. Abra em com o wordpad e copie os Create Table das tabelas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui cara, é o seguinte:

 

-- Estrutura da tabela `comentarios`

--

 

CREATE TABLE IF NOT EXISTS `comentarios` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`nome` varchar(30) NOT NULL,

`email` varchar(30) NOT NULL,

`data` date NOT NULL,

`comentario` text NOT NULL,

`titulo` varchar(30) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=52 ;

 

--

-- Extraindo dados da tabela `comentarios`

--

 

INSERT INTO `comentarios` (`id`, `nome`, `email`, `data`, `comentario`, `titulo`) VALUES

(51, 'rjrjrj', 'rjrj', '2011-10-13', 'rjrjr', 'comentarios2'),

(50, 'teste fodão', 'teste fodão', '2011-10-13', 'teste fodão', ''),

(49, 'wgvwq', 'v bz\\b', '2011-10-13', 'azbab', 'comentarios2'),

(48, 'teste', 'teste', '2011-10-13', 'teste', ''),

(47, '5teyhe', 'hjehe', '2011-10-13', 'ejeje5', 'comentarios2');

 

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

 

Aguardo seu retorno, vlw! :D :D B) B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

manda da tabela de artigo/post, enquanto você manda vou analisando aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um problema que vi foi o seguinte, os comentários que vem da página "comentarios2.php" estão sendo salvos com o titulo "comentarios2" e os comentários que vem da páginas "comentario.php", o título está vazio "".

 

Quando você for dar o select. teria que ser mais o menos assim

 

$sql = 'SELECT nome, email, data, comentario FROM comentarios WHERE titulo = \'comentarios2\'';

 

Com esse sql, deve retornar somente quando o título for comentarios2.

Provavelmente não está sendo bem definido este nome na hora de fazer a consulta.

 

Execute esse sql e veja se está retornando somente o que vem da página comentários2.

Outra é que em nenhum momento você definiu o valor da variável $titulo/$id que utilizava na busca anterior, então, como não havia valor, ele buscava todos os registros no banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gabriel Heming, também acho que este seja o problemas! Mas, por gentileza, você poderia fazer as alterações em todas as partes do código que eu preciso fazer (com esse código aí que eu deixei) e colocar aí pra mim tentar? Acho que assim conseguirei!

 

Muito obrigado pela ajuda! :clap: Aguardo seu retorno! :clap:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conforme o Dexter mostrou a tabela de notícias ( peço que coloque novamente o.O, que foi apagada ), no lugar de titulo na tabela comentarios, seria interessante utilizar o ID da noticia. No caso da tabela do Dexter, seria id_post.

 

então sua consulta seria algo como:

 

$sql = 'SELECT nome, email, data, comentario FROM comentarios WHERE id_post = '.$id_post;

 

Leia este artigo, Chaves estrangeiras (FOREIGN KEYS) no MySQL, é bem interessante pro seu caso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta ai a tabela foi mals

 

--
-- Estrutura da Tabela Post
--

CREATE TABLE post(
id_post int(11) NOT NULL auto_increment,
id_noticias int(11) NOT NULL default '0',
nome varchar(255) NOT NULL,
email varchar(255) NOT NULL,
post text NOT NULL,
data date NOT NULL,
publicado char(1) default 'N',
PRIMARY KEY (id_post),
UNIQUE KEY id (id_post)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

-- --------------------------------------------------------

 

:joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, pelo que vi, o fórum incentiva a prática do estudo, e não entregar tudo pronto.

 

Mas com o que passamos aqui você consegue fazer, só lembre-se de:

 

- definir um ID (identificador único) para cada post/artigo. De preferência para ID numérico e em ordem crescente ( 1, 2, 3, etc...).

- o ID deve ser salvo junto com o comentário para que seja definido de qual post/artigo ele faz parte.

- informar, na hora de buscar os comentários, de qual post/artigo você quer mostrar os comentários.

 

Leia também o artigo sobre as foreign key, que vai te ajudar bastante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

CREATE TABLE comentarios(
id_comentario int(11) NOT NULL AUTO_INCREMENT,
id_artigo int(11) NOT NULL default '0',
nome varchar(30) NOT NULL,
email varchar(30) NOT NULL,
data date NOT NULL,
comentario text NOT NULL,
PRIMARY KEY (id_comentario)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

 

<?php
$conexao = mysql_connect("servidor", "usuário", "senha");
$banco = mysql_select_db("banco de dados");
?>

 

 

essa parte faz em php se nao da erro pela essa parte enviar.php?id_artigo=$id_artigo

 

 

<form name="form" method="post" action="enviar.php?id_artigo=$id_artigo">
<input name="titulo" type="hidden" value="comentarios2" />
Nome: <input type="text" name="nome" />
<br />
E-mail: <input type="text" name="email" />
<br />
Comentário: <textarea name="comentario"></textarea>
<br /><br />
<input type="submit" value="Enviar comentário" />
</form>



<br /><br />
<?php
$sql = "select * from comentarios where id_comentario = '$id_comentario' and id_artigo='$id_artigo' order by id_comentario desc";
$resultado = mysql_query($sql) or die (mysql_error());
if(mysql_num_rows($resultado) < 1) {
echo "Erro";
}
else {
while ($linha = mysql_fetch_array($resultado)) {
$id = $linha["id"];
$titulo = $linha["titulo"];
$nome = $linha["nome"];
$email = $linha["email"];
$data = $linha["data"];
$comentario = $linha["comentario"];
echo "<strong>Nome: </strong>$nome";
echo "<br/><br/>";
echo "<strong>E-mail: </strong>$email";
echo "<br/><br/>";
echo "<strong>Data de envio: </strong>$data";
echo "<br/><br/>";
echo "<strong>Comentário: </strong>$comentario";
echo "<br/><hr>";
}
}

?>

 

<?php
$conexao = mysql_connect("servidor", "usuário", "senha");
$banco = mysql_select_db("banco de dados");
?>

<?php
$id_artigo = $_GET["id_artigo"];
$nome = $_POST['nome'];
$email = $_POST['email'];
$comentario = $_POST['comentario'];
$data = date("Y-m-d");
if($nome == null){
echo "Preencha o campo nome!";
exit();
}
if($email == null){
echo "Preencha o campo e-mail!";
exit();
}
if($comentario == null){
echo "Preencha o campo comentário!";
exit();
}
$inserir = mysql_query("insert into comentarios (id_artigo, nome, email, data, comentario) values ('$id_artigo', '$nome', '$email', '$data', '$comentario')");
if($inserir > 0){
echo "Comentário enviado com sucesso!";
}else{
echo "Não foi possível enviar o comentário";
}
?>

 

cara agora é só adaptar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, é o seguinte: está muito complicado pra mim, não estou entendendo, e não está funcionando, preciso realmente de ajuda. Precisa recomeçar do zero um sistema de comentários para cada página. Alguém disposto a explicar como fazer de novo, do início?

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos começar..

 

1° para que cada pagina tenha um comentario cada uma terá um artigo ou categoria certo

então vamos por categoria para separar pagina exemplo:

 

pagina1

pagina2

pagina3

 

cria a tabela sql categoria com os valores acima...

 

na tabela comentarios você coloca o id da tabela categoria ficando +- assim

 

id_comentario

id_categoria

nome

email

comentario

 

agora vamos as paginas

 

pagina1 tera os links para pagina2 e pagina3

 

no link ficaria +- assim pagina2.php?id_categoria=(aquivocecolocaovalordacategoria) assim exemplo

 

pagina2.php?id_categoria=2

 

certo

 

na pagina 2 você da um Get para resgatar o id da categoria e um WHERE id_categoria para mostrar os comentarios apenas que estão relacionados aquela categoria....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, muitíssimo obrigado pela ajuda mesmo, mas eu preciso que você me explique muito bem, me dê alguns exemplos dos códigos, pois eu não estou conseguindo entender muito bem como isto funciona!

 

Poderia explicar de novo a mesma coisa que você já explicou, só que agora com exemplos de códigos e detalhes?

 

Agradeço desde já!

 

XD :P

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.