Ir para conteúdo

POWERED BY:

Arquivado

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

kleber brito

[Resolvido] Adicionar contador na materia

Recommended Posts

Olá a todos, criei uma pagina que le determinada noticia cadastrada no db, só que gostaria de adicionar a ela, cada vez que uma pessoa lê essa pagina, salva o ip dela no db e conta 1 visita (que eu irei mostrar em um relatorio de leituras de materias em outra pagina)

 

entao se o mesmo ip acessar a materia novamente nao conta como uma visita;

 

 

alguem pode me ajudar?

 

mostranoticia.php

 

<?
$conexao = mysql_connect("localhost","root",""); 
$db = mysql_select_db("teste"); 
$id_select = $_GET['id']; 
$sql_texto = "SELECT * FROM noticias where id = $id_select"; 
$query_texto = mysql_query($sql_texto) or die(mysql_error()); 
$linha = mysql_fetch_assoc($query_texto);
$id = $linha['id_noticia'];
$titulo = $linha['nm_titulo'];
$subtitulo = $linha['nm_intertitulo'];
$texto = $linha['nm_texto'];
$data = $linha['nm_data'];
$jornalista = $linha['nm_jornalista'];
?>
<?php mysql_close(); ?>
<center>
<table width="80%" border="0" cellspacing="2">
  <tr>
	<td><div align="right"><?php echo $data; ?></div></td>
  </tr>
  <tr>
	<td><div align="center"><?php echo $titulo; ?></div></td>
  </tr>
  <tr>
	<td><div align="center"><?php echo $subtitulo; ?></div></td>
  </tr>
  <tr>
	<td><div align="right">por <?php echo $jornalista; ?></div></td>
  </tr>
  <tr>
	<td><div align="left"><?php echo $texto; ?></div></td>
  </tr>
  <tr>
	<td><div align="left">Assessoria de Comunicação</div></td>
  </tr>
</table>
</center>

Tabela:

`noticias` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `data` varchar(50) DEFAULT NULL,
  `mes` varchar(50) DEFAULT NULL,
  `ano` varchar(50) DEFAULT NULL,
  `horario` varchar(50) DEFAULT NULL,
  `jornalista` varchar(50) DEFAULT NULL,
  `titulo` varchar(255) DEFAULT NULL,
  `subtitulo` varchar(255) DEFAULT NULL,
  `texto` longtext,
  `cliques` int(10) DEFAULT NULL,
  `publicar` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `id` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4045;

 

Alguem pode da uma ajuda ae?

 

 

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você vai precisar de outra tabela.

chamada por exemplo:

"visita"

 

Coloca:

idVisita, idNoticia, e ipVisitante.

 

Assim que carregar a página você faz a query que insere o ip do visitante e a id da notícia que ele está lendo somente se ele já não estiver cadastrado. Então para isso você faz um select pelo IP do visitante, e compara se ele já leu a notícia que foi aberta.

 

^^ ta ai.

A lógica da coisa é essa. :lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

boa valeu, entendi +/- mas como essa nova tabela vai saber qual noticia da tabela noticias esta sendo lida para computar?

 

E como vou ter um retorno disso pra saber quais materias tiveram quantos cliques?

 

duas tabelas e um mesmo resultado parece d+ pra minha cabeca hehehee

Compartilhar este post


Link para o post
Compartilhar em outros sites

hehe.. relaxa..

essa é a melhor forma http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Veja.. você já não faz um select apartir do id da notícia para montar ela?

$id_select = $_GET['id']; 
$sql_texto = "SELECT * FROM noticias where id = $id_select";
basta jogar isso na segunda tabela.. veja que eu previ um campo: idNoticia para ela.

 

Joga esse $id_select no INSERT da segunda tabela.

Depois para saber qntos cliques teve cada matéria, você faz um SELECT COUNT `idNoticia`, que vai lhe trazer qntos users viram cada matéria.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae, fiz o seguinte, adicionei isto ao final da pagina que mostra a noticia:

 

<?
$ip = $_SERVER['REMOTE_ADDR'];
$sql = mysql_query("SELECT idNoticia,ip FROM visitas WHERE idNoticia='$id_select' AND ip='$ip'") or die(mysql_error());
if(mysql_num_rows($sql) <= "0"){
	mysql_query("INSERT INTO visitas (idNoticia,ip) VALUES ('$id_select','$ip')")or die(mysql_error());
}
?>

 

Beleza, tentei usar o sql count pra poder mostrar os resultados agora mas nao consegui. Alguma ajuda ae? :D

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.