Jump to content
Fórum Script Brasil
  • 0

Problemas na busca por valores minimo e máximo


Guilherme Freire

Question

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 to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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'"; ...

Edited by tucano
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...