Ir para conteúdo
Fórum Script Brasil
  • 0

Mostrar Veículos Cadastrados De Forma Aleatória.


Guest --Ricardo --

Pergunta

Guest --Ricardo --

Estou com um problema que aparentemente é simples mas está me tirando o sono...

Estou fazendo um site para uma loja de veículos, o site esta funcionando perfeitamente, cadastro veículos e o usuário procura o veículo desejado e visualiza os resultados em uma nova página, que lista todos os veículos.

Meu problema é o seguinte.::

Na hora de criar a parte admnistrativa para adicionar os veículos, eu os separei por CARROS e MOTOS, cada um com os campos específicos, Título, Marca, Modelo, Destaque e etc....

Os veículos que possuem DESTAQUE Ativo aparecem como primeiros da Listagem...

Estou querendo mostrar na página principal do site uma tabela com 06 células e cada uma destas células mostra um dos veículos cadastrados com a opção DESTAQUE Ativa, mostrando o respectivo "Título".

O problema é que o resultado da pesquisa diferencia os veículos como CARROS e MOTOS, utilizando Submit no endereço da página, por exemplo.... resultado.php?Submit=Carros...

------------

if ($_REQUEST['Submit'] == 'Carros') // Se a busca for por carros

{

$detalhesveiculo=detalhescarro.php?id=';

$tipocmbusca='carros';

} else

{

$detalhesveiculo='detalhesmoto.php?id=';

$tipocmbusca='motos';

}

---------------

Isso faz com que na hora de puxar os veículos na página principal eu não os consiga diferenciar entre carros ou motos... já que ambos possuem a mesma definição.::

<?=$row['titulo]?>

E além de mostrar os títulos trocados (já que nada os diferencia) eles saem duplicados, já que mais de um veículo possui a opção destaque = 1 (Quanto maior o número mais destaque ele tem entre os demais)

Na página fica assim.::

<?php

while($row = mysql_fetch_array( $result ))

if ($row['destaque'] == 1):

?>

<?=$row['titulo']?>

<?php

endif;

?>

Fazendo isso o site mostra todos os veículos com destaque igual a 1... o problema é que se tiver mais de um veículo com destaque igual a 1, eles aparecem todos de uma vez só na tela.

------------------

Gostaria de saber como eu faço para o sistema pegar apenas 6 veículos cadastrados e com Destaque (Entre Carros ou Motos) de forma Aleatória e colocá-los com os títulos corretos na página principal.

Agradeço muito qualquer ajuda.

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Na query que você vai buscar já coloca tudo ou seja...

$result = mysql_query("SELECT * FROM tabela WHERE destaque = '1' ORDER BY RAND() LIMIT 6   ");
Esse código ai já vai buscar os dados de veículos apenas com o destaque igual a 1, sorteados aleatoriamente e limitados a 6 resultados Ai você pega Ai você faz o resto assim:
while($row = mysql_fetch_array( $result )){
/*Aqui você chama as colunas que quiser, não precisa ver se a coluna tem valor igual a 1, já que isso já é definido na própria query*/
}

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Ricardo --

Valeu ESerra, com certza esse código que você passou já deu uma "enxugada" legal na página, mas o problema é que são duas tabelas distintas, uma para Carros e outra para Motos, não sei se tem uma maneira de retornar os valores de duas tabelas distintas sem usar o Submit no endereço da Página, mas acredito que sim.

Caso você possa me ajudar novamente fico grato.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, se o submit delimita a tabela então... ai tem 2 soluções, se você quiser 3 carros e 3 motos, faz 2 querys separadas uma para cada tabela... e o LIMIT usa 3...

Se você quer que se escolhida aleatoriamente a tabela dos carros ou das motos usa o rand do PHP (o que eu usei foi o do mysql) para fazer um "sorteio" entre as 2, e usa o switch para definir a tabela...

E na última possibilidade, você coloca

if (($_REQUEST['Submit'] == 'Carros') OR (!isset($_REQUEST['Submit']))) // Se a busca for por carros
{
$detalhesveiculo='detalhescarro.php?id=';
$tipocmbusca='carros';

} else
{
$detalhesveiculo='detalhesmoto.php?id=';
$tipocmbusca='motos';

}

Perceba que eu adicionei o !isset($_REQUEST['Submit']), então se Submit não estiver setado aquela primeira opção também será válida...

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Ricardo --

Agradeço pela ajuda novamente ESerra mas não consegui fazer funcionar como queria.

O Código que você me passou ficou mais redondo, mas mostra apenas "Carros"... não aparecem as motos, tentei de tudo que foi jeito, procurei na Internet, postei as perguntas aqui mas não consigo resolver isso... to pensando sériamente em desistir de tentar resolver isso sózinho e pagar alguém que saiba bem PHP pra conseguir entregar o site no prazo.

Esta é minha última tentativa de botar o sistema pra Funcionar, vou explicar mais ou menos como eu queria que funcionasse, talvez eu tenha explicado errado.

A Página vai ter uma tabela com 2 Linhas e 3 Colunas.::

-----------------------------------------------------------------------------------

--- [Foto Carro] ----------- [Foto Moto] ------------ [Foto Carro]-------

--- Título - Preço ---------- Título - Preço ------------ Título - Preço------

-----------------------------------------------------------------------------------

--- [Foto Moto] ----------- [Foto Carro] --------------- [Foto Moto]-------

--- Título - Preço --------- Título - Preço -------------- Título - Preço----

-----------------------------------------------------------------------------------

Cada Célula teria que mostrar um veículo, com a foto, título e preço. Este é outro problema que acontece, quando eu uso este código os veículos se criam um sobre o outro, não consigo especificar o espaço dele, ou seja, um para cada célula.

Os veículos estão cadastrados em duas tabelas distintas, "Carros" e "Motos".

No Código esta assim.::

<?php
include("connection.php");

include("libparametros.php");
$parametrosbusca= carregarParametrosBusca();
$parametrosbuscaSQL=construirSQLparametrosBusca($parametrosbusca );

if (($_REQUEST['Submit'] == 'Carros') OR (!isset($_REQUEST['Submit']))) // Se a busca for por carros
{
$detalhesveiculo='detalhescarro.php?id=';
$tipocmbusca='carros';
$tipocm='c';

} else
{
$detalhesveiculo='detalhesmoto.php?id=';
$tipocmbusca='motos';
$tipocm='m';

}

$result = mysql_query("SELECT *
                
                FROM $tipocmbusca
                                
                WHERE 
    
                destaque = '2'
                                 
                ORDER BY RAND() 
                
                LIMIT 3
                
                ");
                


include("libfotos.php");
include("truncate.php");

?>
E na Página esta assim.::
<html>
<head>
<title>Teste de Destaque</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body {
    margin-left: 0px;
    margin-top: 0px;
    margin-right: 0px;
    margin-bottom: 0px;
}
-->
</style>
</head>

<body text="#666666" bgcolor="#FFFFFF" link="#666666" vlink="#666666" alink="#666666">
<div align="center">
  <?php
        while($row = mysql_fetch_array( $result ))
        if ($row['destaque'] == 2):
  ?>
  <br>
  <a href="<?=$detalhesveiculo.$row['id']?>"><img src="<?=fotonome($tipocm,$row['id'],'t',TRUE)?>" width="95" height="72" border="0"></a> 
  <br>
<font color="#FFFFFF"><b><font color="#666666" size="1"> 
  <?=$row['titulo']?> - </font> <font color="#666666" size="1"> <?=number_format($row['preço'], 2, ',', '.')?>
</font>
</b>
</font>
<br>

<?php endif;?>

</div>
</body>
</html>

De qualquer maneira agradeço a ajuda que já recebi... já me serviu bastante.C

Abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

Isso é realmente simples... basta usar a solução 1:

se você quiser 3 carros e 3 motos, faz 2 querys separadas uma para cada tabela... e o LIMIT usa 3...

No caso você faz uma query para a tabela carros e outra para a motos... para imprimir lado a lado também tem 2 opções:

1 - Se você tiver certeza que sempre existirão 3 resultados para serem obtidos, cria uma tabela com 3 campos e 2 linhas e usa o mysql_result para imprimir os resultados nela.

2 - Se existir a hipótese do número de veículos ser menor que 3 em alguma das categorias, ai você vai ter que criar as colunas da tabela dinamicamente, a lógica disso está aqui.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Ricardo --

Então cara, o problema é que eu não sei fazer uma Query para cada tabela, tem como você me passar algum exemplo de como criar duas Query diferentes, uma para cada tabela ?

Link para o comentário
Compartilhar em outros sites

  • 0

Você já tem a query pronta...

$result_c = mysql_query("SELECT * FROM carros WHERE destaque = '2'  ORDER BY RAND() LIMIT 3");
$result_m = mysql_query("SELECT * FROM motos WHERE destaque = '2'  ORDER BY RAND() LIMIT 3");

Pronto a $result_c pega dos carros e a $result_m das motos... ai use o mysql_result para imprimir os resultados...

Por exemplo:

echo mysql_result($result_c,0,'nome');

No caso ele vai imprimir o primeiro resultado (0) vindo da query $result,c, resultado pertencente a coluna nome do BD (se ela existir...

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Ricardo --

Agora funcionou cara !! tive que dar uma alterada no código pra pegar a foto mas rodou tudo certo agora, não manjo muito de PHP e dei uma suada pra conseguir entender direito...

Valeu pela Força.

Abraço.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,1k
×
×
  • Criar Novo...