Raz 0 Denunciar post Postado Dezembro 21, 2008 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
Thiago Pereira Machado 0 Denunciar post Postado Dezembro 22, 2008 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
Raz 0 Denunciar post Postado Dezembro 22, 2008 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
Thiago Pereira Machado 0 Denunciar post Postado Dezembro 22, 2008 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
Mário Monteiro 179 Denunciar post Postado Dezembro 22, 2008 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
Raz 0 Denunciar post Postado Dezembro 22, 2008 Obrigado pela resposta Mário. Eu quebrei a cabeça pensando em como fazer isso, teria como me dar um exemplo? http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Alves 3 Denunciar post Postado Dezembro 22, 2008 Faz o seguinte, na hora que o for adicionado uma nova "ultima visita" voce deleta a 10ª ultima pessoa que visitou o perfil. Compartilhar este post Link para o post Compartilhar em outros sites
Raz 0 Denunciar post Postado Dezembro 22, 2008 O problema é que eu não estou sabendo como fazer isso. Sera que poderia me dar um exemplo? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Alves 3 Denunciar post Postado Dezembro 22, 2008 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
Thiago Pereira Machado 0 Denunciar post Postado Dezembro 23, 2008 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
Renato Siroma 2 Denunciar post Postado Dezembro 23, 2008 Array_shift Array_pad Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Dezembro 23, 2008 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
Raz 0 Denunciar post Postado Dezembro 23, 2008 Muito obrigado a todos que responderam. http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif A solução do Thiago Pereira funcionou perfeitamente, muito obrigado mesmo! Feliz Natal a todos http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Dezembro 23, 2008 que bom que resolveu abraços Compartilhar este post Link para o post Compartilhar em outros sites