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

Problemas na busca por valores minimo e máximo


Guilherme Freire

Pergunta

Boa tarde Pessoal,

Estou com um problema, tenho um combo em minha página com a seguinte estrutura

<select name="valor" id="valor">
      <option>Selecione</option>
      <option value="1">10.000,00 a 100.000,00</option>
      <option value="2">100.000,00 a 200.000,00</option>
      <option value="3">200.000,00 a 300.000,00</option>
      <option value="4">300.000,00 a 400.000,00</option>
      <option value="5">400.000,00 a 1.000.000,00</option>
</select>
Em minha página onde recebo os valores, estou trabalhando da seguinte forma:
if (isset($_GET['valor']) && $_GET['valor'] > 0){
    if ($_GET['valor'] == "1"){
        $busca .= "AND valor_imovel >= '10.000,00' or valor_imovel <= '100.000,00'";    
    }elseif ($_GET['valor'] == "2"){
        $busca .= "AND valor_imovel >= '100.000,00' or valor_imovel <= '200.000,00'";    
    }elseif ($_GET['valor'] == "3"){
        $busca .= "AND valor_imovel >= '200.000,00' or valor_imovel <= '300.000,00'";
    }elseif ($_GET['valor'] == "4"){
        $busca .= "AND valor_imovel >= '300.000,00' or valor_imovel <= '400.000,00'";    
    }elseif ($_GET['valor'] == "5"){
        $busca .= "AND valor_imovel >= '400.000,00' or valor_imovel <= '1.000.000,00'";    
    }
}

Os valores na minha tabela estão em valor moeda.

Mas não estou conseguindo retornar os dados.

Alguém pode me ajudar?

Grato.

www.guilhermefreire.com.br

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Guilherme Freire, quanto a valor moeda, não sei te ajudar... Na verdade não conheço esse tipo de dado em SQL, mas dá uma olhada nessa busca, porque com esse 'or' aí, a query vai retornar todos os resultados para os quais qualquer uma das condiçoes for verdadeira, por exemplo:

No intervalo de 1 a 10, selecione todos os números x que atendem (x >= 2 OU x <= 8) -> a seleção retorna o intervalo todo, porque:

x >= 2 é (2, 3, 4, 5, 6, 7, 8, 9, 10)

x <= 8 é (1, 2, 3, 4, 5, 6, 7, 8)

Como você mandou selecionar quem atende uma condição OU a outra, a query retorna todo o intervalo [1, 10].

O correto seria:

No intervalo de 1 a 10, selecione todos os números x que atendem (x >= 2 E x <= 8) -> agora sim ele vai retornar a intersecção dos conjuntos, isto é, quem atende às duas condições simultaneamente: somente [2, 8], ou seja:

... $busca .= "AND valor_imovel >= 'x' and valor_imovel <= 'y'"; ...

Editado por tucano
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,1k
    • Posts
      651,9k
×
×
  • Criar Novo...