Jump to content


Photo

Rand() Entre Os Registros Mais Recentes


  • Faça o login para participar
9 replies to this topic

#1 leonelbr

leonelbr

    12 Horas

  • Usuários
  • 205 posts
  • Sexo:Masculino

Posted 12/09/2009, 17:54

FalAe galera!

Como descrito no título, to precisando escolher aleatoriamente alguns intens, mas apenas dos que foram adicionados recentemente.

Para ficar mais claro, é o seguinte:

Tenho ~ 700 textos num BD, dai ciei um slide (com o ótimo "JQuery Cycle Plugin", fica ai a dica rs) e, nele, coloquei pra aparecer aleatoriamente 5 registros por vez. O problema é que tem texto que é de... 2006!!! Impossível apresentar em local privilegiado um conteúdo tão... :wacko:

Então é isso. Como fazer para pegar 5 textos randomicamente entre os 20 mais novos?

Obrigado desde já pela força.

Vlw!
FLASH FORWARD - Novo seriado da ABC. Um substituto para LOST?
Série de ficção cientifica que promete arrastar muitos fãs, principalmente os de Lost. Confira mais em:
www.flashforwardbr.com
-------------------------------------------------------------------------------------------------
Portal Evangélico ( AMIZADE | Downloads | Cartões Virtuais )

#2 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 12/09/2009, 19:02

Bom, cada notícia deve ter um ID AUTO_INCREMENT.
Basta ordenar pelo ID descendente.

SELECT * FROM noticias ORDER BY id DESC LIMIT 5

Até mais ^_^

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#3 Bruno Tanaka

Bruno Tanaka

    Turista

  • Usuários
  • 29 posts
  • Sexo:Masculino
  • Interesses:Troca de informações, ampliação de conhecimentos, trabalhos e contatos profissionais.

Posted 12/09/2009, 19:32

cara para o seu texto dever ter um ID.... Crie um sistema de Id numérico, onde os 5 numeros mais altos são apresentados no seu sistema em forma aleatória.


É a forma mais rápida e simples de fazer isso.

E sempre que você inserir um novo texto no banco, ele automaticamente já cria o Id com o numero mais alto disponivel...

Se quiser isso de uma forma mais complexa, me procure que eu te ajudo.


Abraços.

Bom, cada notícia deve ter um ID AUTO_INCREMENT.
Basta ordenar pelo ID descendente.

SELECT * FROM noticias ORDER BY id DESC LIMIT 5

Até mais ^_^



Essa é a idéia amigo.

Faça assim que dá certo.! Qualquer coisa me procure que te dou umas dicas.


Bruno S. Tanaka - Design e programação
Website: www.brunotanaka.com.br
Soluções para sua empresa


#4 leonelbr

leonelbr

    12 Horas

  • Usuários
  • 205 posts
  • Sexo:Masculino

Posted 13/09/2009, 18:49

FalAe!

Primeiro, obrigado Dudu e Bruno Tanaka pela atenção.

Mas esse lance do ID eu já tenho e consigo listar os 5 mais recentes. O problema não é esse, não consegui apresentar a duvida.

É o seguinte: tenho um SLIDE que pega no BD 5 textos aleatoriamente, até ai tudo certo. O problema é que nesses 5 selecionados aparecem os texto antigos.

O problema PRINCIPAL é que não basta que os últimos 5 sejam retornados. Preciso que, cada vez que um internauta abra a página, apareçam 5 textos entre os 20 mais recentes.

Teoricamente seria pegar os 20 mais recentes e criar um RAND() entre eles e apresentar APENAS 5 (e não os 20).

Nossa, não sei se consegui dessa vez rsrsrs :D

Aguardando...

Valeu!
FLASH FORWARD - Novo seriado da ABC. Um substituto para LOST?
Série de ficção cientifica que promete arrastar muitos fãs, principalmente os de Lost. Confira mais em:
www.flashforwardbr.com
-------------------------------------------------------------------------------------------------
Portal Evangélico ( AMIZADE | Downloads | Cartões Virtuais )

#5 MarcoviZ

MarcoviZ

    ubuntu for human being

  • Usuários
  • 1137 posts
  • Sexo:Não informado

Posted 14/09/2009, 08:21

Tente isso e veja se funciona para você:

SELECT * FROM tabela WHERE codigo in (SELECT codigo FROM tabela order by codigo desc LIMIT 20 ) ORDER BY RAND() LIMIT 5


Pela lógica ele vai selecionar os últimos 20 registros e dentre eles ele vai selecionar 5 randômicos.


[]'s
[]'s

#6 leonelbr

leonelbr

    12 Horas

  • Usuários
  • 205 posts
  • Sexo:Masculino

Posted 14/09/2009, 14:35

FalAe!

MarcoviZ, valeu pela força, mas ainda não consegui adaptar aqui.

Minha query funcionando perfeitamente é a seguinte:

$query = "SELECT * FROM $tabela_mysql t1 INNER JOIN xxx_conteudo_img t2 ON (t1.id=t2.img_id_conteudo) WHERE subtitulo!='' ORDER BY rand() LIMIT 5";

Tentei adaptar o que você me passou da seguinte forma:

$query = "SELECT * FROM $tabela_mysql t1 INNER JOIN xxx_conteudo_img t2 ON (t1.id=t2.img_id_conteudo) WHERE subtitulo!='' in (SELECT id FROM $tabela_mysql order by id desc LIMIT 20) ORDER BY rand() LIMIT 5";

Mas deu o seguinte erro:

: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/xxxxx/public_html/yyyyy.php on line

Thanks

Edição feita por: leonelbr, 14/09/2009, 14:37.

FLASH FORWARD - Novo seriado da ABC. Um substituto para LOST?
Série de ficção cientifica que promete arrastar muitos fãs, principalmente os de Lost. Confira mais em:
www.flashforwardbr.com
-------------------------------------------------------------------------------------------------
Portal Evangélico ( AMIZADE | Downloads | Cartões Virtuais )

#7 '' sem.Ponto

'' sem.Ponto

    Super Veterano

  • Ex-Admins
  • 2098 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte

Posted 14/09/2009, 14:49

subtitulo!='' in (SELECT id FROM $tabela_mysql order by id desc LIMIT 20)
Esse pedaço aí está errado.

Você tem duas condições, sendo assim tem que separar com AND. E é necessário informar o campo antes do IN, que no caso seria o campo id.
att,
Muller Dias
ex-administrador Fórum WMO

#8 leonelbr

leonelbr

    12 Horas

  • Usuários
  • 205 posts
  • Sexo:Masculino

Posted 14/09/2009, 16:26

Então...

Coloquei assim:

subtitulo!='' AND id in (SELECT id

Mas deu erro denovo...

: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/xxxxx/public_html/yyyyy.php on line

Será que modifiquei corretamente?

Vlw!

Edição feita por: leonelbr, 14/09/2009, 16:27.

FLASH FORWARD - Novo seriado da ABC. Um substituto para LOST?
Série de ficção cientifica que promete arrastar muitos fãs, principalmente os de Lost. Confira mais em:
www.flashforwardbr.com
-------------------------------------------------------------------------------------------------
Portal Evangélico ( AMIZADE | Downloads | Cartões Virtuais )

#9 MarcoviZ

MarcoviZ

    ubuntu for human being

  • Usuários
  • 1137 posts
  • Sexo:Não informado

Posted 14/09/2009, 18:00

deve ser algo +- assim:

SELECT * FROM $tabela_mysql t1 INNER JOIN xxx_conteudo_img t2 ON (t1.id=t2.img_id_conteudo) WHERE subtitulo!='' AND t1.id IN (select id FROM t1 ORDER BY id DESC LIMIT 20 ) ORDER BY rand() LIMIT 5

[]'s
[]'s

#10 leonelbr

leonelbr

    12 Horas

  • Usuários
  • 205 posts
  • Sexo:Masculino

Posted 15/09/2009, 13:34

FalAe!

Deu o mesmo erro...

http://icrvb.com/slide4.php

Edição feita por: leonelbr, 15/09/2009, 14:26.

FLASH FORWARD - Novo seriado da ABC. Um substituto para LOST?
Série de ficção cientifica que promete arrastar muitos fãs, principalmente os de Lost. Confira mais em:
www.flashforwardbr.com
-------------------------------------------------------------------------------------------------
Portal Evangélico ( AMIZADE | Downloads | Cartões Virtuais )




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq