Ir para conteúdo

POWERED BY:

Arquivado

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

Raz

[Resolvido] Sistema de "visitas"

Recommended Posts

Boa tarde a todos.

 

Estou trabalhando em uma pagina de perfil e pensei em implementar nela um sistema de "visitas", nele seriam exibidas as ultimas 10 pessoas que olharam o perfil.

 

Ate ai tudo bem, nenhum grande misterio.

 

A duvida que eu tenho é como fazer pra deletar os registros de pessoas que não estão mais sendo exibidas.

 

Vou exemplificar...

 

11 pessoas acessaram a pagina, ele exibira as 10 ultimas, como deletar a 11ª?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde a todos.

 

Estou trabalhando em uma pagina de perfil e pensei em implementar nela um sistema de "visitas", nele seriam exibidas as ultimas 10 pessoas que olharam o perfil.

 

Ate ai tudo bem, nenhum grande misterio.

 

A duvida que eu tenho é como fazer pra deletar os registros de pessoas que não estão mais sendo exibidas.

 

Vou exemplificar...

 

11 pessoas acessaram a pagina, ele exibira as 10 ultimas, como deletar a 11ª?

Caso você esteja gravando no banco sempre que uma pessoa visualiza o perfil de outra, você pode fazer uma busca no banco limitando 10 registros

e para mostrar os últimos 10 registros você ordena a busca de forma decrescente.

 

$sql = "SELECT * FROM tabela ORDER BY campo_id DESC LIMIT 0,10";

Assim você pega somente os 10 últimos registros. Ou seja as dez últimas pessoas que visualizaram o perfil.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, obrigado pela resposta, mas não é essa a minha duvida http://forum.imasters.com.br/public/style_emoticons/default/natal_tongue.gif:)

 

Veja bem, se eu simplesmente usar o LIMIT eu exibirei somente as ultimas vizitas e constantemente gravara a mesma pessoa vizitando o mesmo perfil ocupando espaço desnecessario...

 

O que eu queria saber é como fazer para exibir sempre 10 (dai sim usando o limit) e ir eliminando os registros mais antigos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi mais e se você então pesquisar qnts registros você tem na tabela de visualizações de usuarios que visualizaram determinado perfil, e caso tenha 11, no caso 11-10 = 1 e aew você gera um loop, e apaga o registro mais antigo, apagando soh uma vez pois 11-10 = 1.

Compartilhar este post


Link para o post
Compartilhar em outros sites

delete todos que nao estao entre os 10 ultimos e nao correrá este risco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma ideia rapida

 

<?php
$query = mysql_query("SELECT * FROM tabela LIMIT 10");
$r = end(mysql_fetch_array($query));
$deleta = $r[3]; // Numero da array do id...
$query2 = mysql_query("DELETE * FROM tabela WHERE id=$deleta;");
// Depois voce da um insert e coloca outro
?>

Nao testei nem vai dar tempo de testar, to fazendo uma coisa minha aqui e to sem tempo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguindo a idéia que eu te falei você pode fazer assim:

Dessa forma na tabela que cadastra um user qdo ele visualiza o perfil de outro, essa tabela tera somente 10 usuarios para cada

perfil visualizado, para não ter como você disse dados desnecessários no bd.

 

$limite = 10; // estabeleço aqui o limite
$perfil = $_GET['perfil']; // pego o perfil especifico que eu quero fazer a função
$sql = "SELECT * FROM tabela WHERE perfil = '$perfil' ORDER BY id ASC"; // faço uma busca exibindo os itens ordenados do mais antigo para o mais recente
$qr = mysql_query($sql);
if ($qr)
{
 $total = mysql_num_rows($qr); // pego o total de registros
 if ($limite < $total) // vejo se o total de registro eh maior que o limite estabelecido
 {
  $qnt_del = $total - $limite; // vejo qnts registros devo deletar, ou seja qnts estão a mais do que o limite
 }
 $i = 0; 
 while($arr = mysql_fetch_array($qr))
 {
  $id = $arr['id']; 
  if ($qnt_del)
  {
   if ($i < $qnt_del) // condição para apagar somente o q esta ah mais
   {
	$sql_del = "DELETE FROM tabela WHERE id = '$id'"; // apago o registro mais antigo
	$qr_del = mysql_query($sql_del);
   }
  }
  $i = $i+1;
 } 
}
Após isso eh soh exibir os registros da tabela.

Amigo a idéia eh essa, pode ter alguns errinhus aew mais axo q você pode ter uma luz com esse exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

basicamente voce iria inserir normal o proximo registro e logo em seguida deletaria os fora do TOP 10

 

$sql = "DELETE FROM tabela WHERE campo_id NOT IN (SELECT campo_id FROM tabela ORDER BY campo_id DESC LIMIT 0, 10";

Compartilhar este post


Link para o post
Compartilhar em outros sites

que bom que resolveu

 

abraços

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.