Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 392
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Paginação com resultados aleatórios sem repetição

14-02-2009 16:07

Este script funciona perfeitamente e é de grande utilidade para muitos, pois traz os resultados do BD de forma aleatória com paginação e sem repetição.

O que eu não estou conseguindo fazer é com que atravéz do menu eu consiga buscar somente os itens que eu quero com relação a um item da minha tabela.

Exemplo:
<a href="index.php?&categoria=Casa">Casas</a>

Minha intenção é que ao clicar neste venha somente os itens em que a categoria for igaul a casa.
Esta retornando todos.

Segue o script.

<? mysql_select_db($database_mais, $mais); ( a conexão cada um tem o seu tipo ) $pagina = $_GET["pagina"]; if($pagina == "") { $pagina = "1"; } $maximo = 8; $inicio = $pagina - 1; $inicio = $maximo * $inicio; $strCount = "SELECT COUNT(*) FROM dados ORDER BY RAND($seed)"; $query = mysql_query($strCount); $row = mysql_fetch_array($query); $total = $row["0"]; if($total <= 0) { echo "<center>Nenhum registro encontrado.</center>"; } else { if(!isset($_GET["seed"])) { $seed = rand(); } else { $seed = addslashes($_GET["seed"]); } $strQuery = "SELECT * FROM dados ORDER BY RAND($seed) LIMIT $inicio,$maximo"; $query = mysql_query($strQuery); while($row = mysql_fetch_array($query)) { ?> <table style="border:1px solid #FFCC66; padding:5px;" bgcolor="#FFFFCC" width="340px"> <tr> <td width="100" height="85" style="padding:5px" bgcolor="#FFCC66"><a href="exibir.php?id=<?php echo $row['id']; ?>"><img src="capa/<?php echo $row['cat']; ?>" /></a></td> <td>&nbsp;&nbsp;<strong>Tipo</strong>&nbsp;:&nbsp;<a href="exibir.php?id=<?php echo $row['id']; ?>"><?php echo $row['categoria']; ?></a><br><br> &nbsp;<strong>&nbsp;Dados&nbsp;:</strong>&nbsp;<?php echo $row['obs']; ?></td> </tr> </table><br /> <? } $menos = $pagina - 1; $mais = $pagina + 1; $pgs = ceil($total / $maximo); if($pgs > 1 ) { if($menos>0) { echo "<a href=\"?pagina=$menos&seed=$seed\" class='texto_paginacao'>anterior</a> "; } for($i=1;$i <= $pgs;$i++) { if($i != $pagina) { echo " <a href=\"?pagina=".($i)."&seed=$seed\" class='texto_paginacao'>$i</a>"; } else { echo " <strong class='texto_paginacao_pgatual'>".$i."</strong>"; } } if($mais <= $pgs) { echo " <a href=\"?pagina=$mais&seed=$seed\" class='texto_paginacao'>próxima</a>"; } } } ?>

Ja tentei varias formas mas ainda nada ... agradeço qualquer ajuda.
:shock :shock :shock
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Paginação com resultados aleatórios sem repetição

14-02-2009 19:53

Veja um dos selects

$strCount = "SELECT COUNT(*) FROM dados ORDER BY RAND($seed)";

Se você usar a condição WHERE manualmente, você já poderia pegar todos da categoria desejada, mas como vem do link, você pode ter um if verificador, que quando vier o $categoria, seria adicionar o WHERE categoria=...

MOVIDO: de PHP para MySQL
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 392
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Paginação com resultados aleatórios sem repetição

15-02-2009 09:49

Poderia passar um exemplo ...
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Paginação com resultados aleatórios sem repetição

15-02-2009 10:21

Pode fazer o seguinte, adiciona o seguinte antes do primeiro select

if($_GET['condicao']!= "") { $condicao = "WHERE categoria='".$_GET['condicao']."'"; $condicao_link = "condicao=".$_GET['condicao'].""; }

Note o seguinte, quando vier condicao pelo link ( ?condicao=valor... ) vai ser criado $condicao, com o WHERE para complemento no SELECT e $condicao_link, para passar as condições para o link.

O primeiro select passa a ser
$strCount = "SELECT COUNT(*) FROM clientes $condicao ORDER BY RAND($seed)";

O segundo
$strQuery = "SELECT * FROM clientes $condicao ORDER BY RAND($seed) LIMIT $inicio,$maximo";

Em todos os links da paginação será adicionado no final o seguinte
&$condicao_link
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 392
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Paginação com resultados aleatórios sem repetição

15-02-2009 22:16

Depois de muito apanhar ... e quase voltar aqui para te pertubar ... rs

Só o link que eu mudei, os demais itens fiz conforme sua orientação ....

<a href="index.php?&condicao=Casa">Casas</a>

Funcionando perfeitamente ....
Muito obrigado.

:D :D :D
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Paginação com resultados aleatórios sem repetição

15-02-2009 22:20

Boa :smile
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Mensagens: 1

Paginação com resultados aleatórios sem repetição

05-11-2009 10:01

Na consulta "ORDER BY RAND($seed)"; , o que seria $seed ?

obrigado
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Paginação com resultados aleatórios sem repetição

05-11-2009 12:40

Existe

ORDER BY seucampo, onde ordena a consulta por um campo específico e o ORDER BY RAND(), que retorna os dados de forma aleatória.

Eu nunca usei passando valor para o RAND.
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado