Ir para conteúdo

POWERED BY:

Arquivado

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

wannabe

Relacionar duas tabelas (Artigo com comentario)

Recommended Posts

Pessoal pelooooo amor de Deus hehe.. jah tow caindo os cabelos.. nem durmo mais.. so quebrando a cabeça com uma coisa que acho q deve ser facil.. lá vai.. Eu estou precisando criar um sistema de artigos onde os usuarios poderão comentar nos artivos q eu fizer...a db chama-se noticias onde tempos duas tabelas:

 

-noticia:

noticias

-comentarios:

 

onde:

 

- noticias contém os campos ( id, noticia, foto, autor)

 

e em...

 

- comentarios nós temos os campos... id comenatio e nome

 

daí nem sei como começar.. jah li sobre relacionamento deve ser a solução mas vem muito vago pois muitos mostram a porta... outros a chave e uns só me dizem q devo entrar.. mas ninguem mostra completo...

 

 

na teoria eu até q sei.. o q tenho que fazer é isto..

 

 

1ª na pagina noticias a noticia vai tah lah exibida.. e tem um link.. quando o caba clicar vai abrir um popup este jah vai tah no hidden o id da noticia... tipo.. pego por $_GET e com um campo para o ceito digitar o comentario e postar.. agora este comentario tem q ser relacionado a noticia em questão.. q q tem o valor do id pego pelo get...

 

// PS.: eu gostaria de saber como cadastrar a noticia relacionada.. como criar o campo e como exibir depois de pronta.. se alguem souber e tiver afim de salvar uma alma hehe... ficarei muito muito muito³ grato :D

 

 

ah. eu sei q o sistema é muitos para um.. ou seja.. ( muitos comentarios por artigo cadastrado) hhum.. só mais uma coisa.. o sistema não pode ser baseado ( comentarios) em txt igual muitos q eu jah vi... tem q ser todo no mysql

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma coisa bem simples

 

cria 2 tabelas(os campos q eu citar sao obrigadtorios)

 

artigo

id

artigo

etc...

 

comentario

id

fk_artigo

etc...

 

na query você usa SELECT * FROM comentario, artigo WHERE algum_criterio_seu AND artigo.id = comentario.fk_artigo

 

simples =D

 

pra falar a verdade eu to usando essa query aki agora....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas eu não teria que relacionar as duas? tipo relacionar a comentario com a artigo como faço isto? ou da maneira q está aí eu posso apenas criar as tabelas no modo InnoDB depois cadastrar as noticias e deixar o campo para o form.. sendo q no fk_artigo o form vai enviar o id da artigo.. ou tow viajando? rpz... eh q tow lezim nisto...

 

eu fiz assim...

 

Estrutura da tabela `comentario`

CREATE TABLE `comentario` (
  `id` tinyint(4) NOT NULL auto_increment,
  `fk_artigo` int(4) NOT NULL,
  `comentario` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

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

-- Estrutura da tabela `noticias`

CREATE TABLE `noticias` (
  `id` tinyint(4) NOT NULL auto_increment,
  `artigo` text NOT NULL,
  `autor` varchar(50) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

Compartilhar este post


Link para o post
Compartilhar em outros sites

como eu termino este codigo de modo que seja exibida uma unica mensagem e varios comentarios ( os relacionados a ela...) brigadão amigo

nesse caso é questão de raciocínio lógico.

é o seu trabalho.

 

basta fazer criar uma estrutura de repetição

 

exemplo

while( $dados = mysql_fetch_array($buscar) ){

 

}

 

se tiver dificuldades estude esse tutorial básico:

http://www.silicio.com.br/php/tutorial.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

heeh resolvido contudo surgiu outro problema... referencias duplicadas... =(

 

<?php 

$cn=mysql_connect("localhost","root","pass")
or die ("erro 1");

$db=mysql_select_db("nt")
or die ("erro 2");

$buscar=mysql_query("SELECT * FROM noticias, comentarios 

WHERE noticias.id=comentarios.id")
or die ("erro");


while($mostrar=mysql_fetch_array($buscar))
{
$com=$mostrar["comentario"];
echo $com."<br>";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

wannabe, pelo que estou vendo não há necessidade de fazer consulta referenciada

 

o que entendi é que você qeur exibir assim:

 

 

titulo noticia

 

conteudo noticia conteudo noticia conteudo noticia conteudo noticia conteudo noticia

conteudo noticia conteudo noticia conteudo noticia conteudo noticia

conteudo noticia conteudo noticia conteudo noticia conteudo noticia conteudo noticia conteudo noticia

conteudo noticia conteudo noticia conteudo noticia conteudo noticia conteudo noticia conteudo noticia

conteudo noticia conteudo noticia conteudo noticia

 

comentarios

 

1- comment 1comment 1comment 1comment 1comment 1comment 1comment 1

comment 1comment 1comment 1comment 1

comment 1comment 1comment 1comment 1comment 1comment 1comment 1

 

2- comment 1comment 1comment 1comment 1comment 1comment 1comment 1

comment 1comment 1comment 1comment 1

comment 1comment 1comment 1comment 1comment 1comment 1comment 1

 

é isso não é ?

 

 

basta selecionar a noticia primeiro

 

$sql = SELECT * FROM NOTICIA WHERE id = " . $noticia_id;

$ver = mysql_fetch_array( $sql );
echo $ver['artigo'];

 

e logo em baixo faça o loop nos comentários cujo id seja igual a $noticia_id

 

 

 

$sql = SELECT * FROM COMENTARIO WHERE id = " . $noticia_id;

while( $ver = mysql_fetch_array( $sql ) ){
echo "<hr>" . $ver['comentario'];
}

 

é apenas um exemplo..

Compartilhar este post


Link para o post
Compartilhar em outros sites

comentar.php

 

(descrição: formulario que recupera os dados vindo de um get.. por exemplo de um link...

 

ex.: <a href="comentar?id=1">comentar</a>

 

<?php $id=(int)$_GET["id"]; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'>http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">'>http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Comentar</title>
<style type="text/css">
<!--
body {
	background-color: #cccccc;
}
-->
</style></head>

<body>
<form action="post_comentar.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
  

<p>
 <input name="id" type="hidden" id="id" value="<?php echo $id;?>" />
<label>Nome:
  <input name="nome" type="text" id="nome" value="" />
  </label>
  <p>
	<label>E-mail:
	<input name="email" type="text" id="email" value="" />
	</label>
</p>
	<p>
	<label>
	<textarea name="comentario" cols="30" rows="5" id="comentario"></textarea>
	</label>
</p>
  <p>
	<label>
	<input type="submit" name="Submit" value="Enviar" />
	</label>
  </p>
  <p>

  </p>
  <label></label>
</form>
</body>
</html>

 

este aih de cima é o formulario.. então entra o post_comentar.php

 

 

post_comentar.php

(aqui é a pagina responsavel por gravar os dados no mysql)

 

 

<?php

$id=$_POST["id"]; //recebe o id vindo da outra pagina
$nome=$_POST["nome"]; 
$email=$_POST["email"];
$comentario=$_POST["comentario"];

$cnn=mysql_connect("localhost","root","pass")
or die("erro ao conectar com o bd");

$db = mysql_select_db("noticias")
or die("erro ao conectar com a tabela");

$inserir="INSERT INTO comentarios (idnoticia,nome,email,comentario)VALUE('$id','$nome','$email','$comentario')";

$inserir=mysql_query($inserir)
or die("erro");

echo "hum...";

?>

 

agora a pagina que vai exibir os dados..

 

exibir_comentarios.php

 

da mesma forma da primeira.. você usa tipow uma query para chamar ela...

 

<?php 
$id=(int)$_GET["id"];

if($id=="0")
{
echo "<!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=iso-8859-1 \" />
<title>Untitled Document</title>
<style type= \"text/css\">
<!--
body {
	background-color: #FF0000;
}
.style1 {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	color: #000000;
}
-->
</style></head>

<body>
<table width= \"733 \" height= \"28 \" border= \"0 \" cellpadding= \"0 \" cellspacing= \"0 \">
  <tr>
	<td height= \"28 \" bgcolor= \"#FFFF00 \"><div align= \"center \" class= \"style1 \">ERRO INTERNO NO SISTEMA cod.: 0028 </div></td>
  </tr>
</table>
</body>
</html>";
break;
}
else

{

$cn=mysql_connect("localhost","root","pass")
or die ("erro 1");

$db=mysql_select_db("noticias")
or die ("erro 2");

$buscar=mysql_query("SELECT * FROM comentarios WHERE comentarios.idnoticia=$id")
or die ("erro");

while($mostrar=mysql_fetch_array($buscar))
{
$com=$mostrar["comentario"];
echo $com."<br>";
}

}
?>

 

AGRADECIMENTOS:

 

- Hinom

- Igor

- a mim ( que não desisti)

- ao google..

- ao Lucas Pascoa - tutorial mysql - http://lucaspascoal.blog.br/2007/11/13/tut...os-e-variaveis/

 

 

VLWS GENTE... AGORA VOU DORMIR.. EU MEREÇO HEHE..

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.