mbpp 2 Denunciar post Postado Outubro 27, 2014 Oi tudo bem, algúem sabe porque minha query não funciona? não sei qual o problema, deixo abaixo a minha query SELECT * FROM produtos WHERE fk_categoria = '$categoria' AND (preco BETWEEN 0 AND '$valor') Compartilhar este post Link para o post Compartilhar em outros sites
jackson.lessa 1 Denunciar post Postado Outubro 27, 2014 Qual o erro que retorna? fiz um teste aqui alterando os valores e funcionou. Passo a passo, A tabela esta correta? As colunas são essas? Você esta alterando as variáveis? valores numéricos não precisam de aspas (caso do preco) Compartilhar este post Link para o post Compartilhar em outros sites
mbpp 2 Denunciar post Postado Outubro 28, 2014 Nao retorna erro, só me dás os resultados errados. Compartilhar este post Link para o post Compartilhar em outros sites
jackson.lessa 1 Denunciar post Postado Outubro 28, 2014 Você está passando a categoria certa e a valor máximo certo? Exemplo: ai você está pesquisando por todos os produtos que pertencem a categoria x e custam entre 0 e y Compartilhar este post Link para o post Compartilhar em outros sites
Electronic 124 Denunciar post Postado Outubro 28, 2014 Dê um echo nesse select pra ver como ele esta fazendo a consulta e o valor das variaveis Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Outubro 28, 2014 O que seriam os "resultados errados" ? Compartilhar este post Link para o post Compartilhar em outros sites
mbpp 2 Denunciar post Postado Outubro 28, 2014 Você está passando a categoria certa e a valor máximo certo? Exemplo: ai você está pesquisando por todos os produtos que pertencem a categoria x e custam entre 0 e y Oi Jackson, basicamente o que pretendo é que a variabel valor é um valor concreto, nesse caso poderá ser 20, 50, ou 100, o que pretende é buscar registos onde o preço é até 20 ou 50 ou 100. Compartilhar este post Link para o post Compartilhar em outros sites
jackson.lessa 1 Denunciar post Postado Outubro 28, 2014 na sua consulta atual ele ta buscando todos os produtos que tem preço entre 0 e 20, 0 e 50 ou 0 e 100, de acordo com o que você passar como valor se quiser pegar todos os produtos com preco = 20 ou 50 ou 100 você pode usar SELECT * FROM produtos WHERE fk_categoria = '$categoria' AND preco IN (20,50,100) ou ainda SELECT * FROM produtos WHERE fk_categoria = '$categoria' AND (preco = 20 OR preco = 50 or preco = 100) É isso que você gostaria? ou é a faixa de preço mesmo que vc quer? Compartilhar este post Link para o post Compartilhar em outros sites
mbpp 2 Denunciar post Postado Outubro 28, 2014 na sua consulta atual ele ta buscando todos os produtos que tem preço entre 0 e 20, 0 e 50 ou 0 e 100, de acordo com o que você passar como valor se quiser pegar todos os produtos com preco = 20 ou 50 ou 100 você pode usar SELECT * FROM produtos WHERE fk_categoria = '$categoria' AND preco IN (20,50,100) ou ainda SELECT * FROM produtos WHERE fk_categoria = '$categoria' AND (preco = 20 OR preco = 50 or preco = 100) É isso que você gostaria? ou é a faixa de preço mesmo que você quer? Eu não quero o preço valor igual (=), no meu caso quero = ou menor que esses valores (20,50 e 100), imagine que é uma busca, onde tenho muitos produtos, e quero buscar todos os produtos que tenham o preço até 20, 50 ou 100. Compartilhar este post Link para o post Compartilhar em outros sites
jackson.lessa 1 Denunciar post Postado Outubro 28, 2014 E o que a primeira consulta que você colocou aqui está trazendo que não deveria? ela está certa. e a categoria está certa? seu campo preço é do tipo float ou inteiro? Compartilhar este post Link para o post Compartilhar em outros sites
mbpp 2 Denunciar post Postado Outubro 28, 2014 E o que a primeira consulta que você colocou aqui está trazendo que não deveria? ela está certa. e a categoria está certa? seu campo preço é do tipo float ou inteiro? O campo preço é tipo varchar Compartilhar este post Link para o post Compartilhar em outros sites
jackson.lessa 1 Denunciar post Postado Outubro 28, 2014 Neste caso vc deveria utilizar aspas no 0 (zero) tbm, já q é texto. Mas o certo seria que o campo preco fosse do tipo Float. Quais são os valores que a consulta está trazendo que não deveriam? Compartilhar este post Link para o post Compartilhar em outros sites
mbpp 2 Denunciar post Postado Outubro 28, 2014 Neste caso você deveria utilizar aspas no 0 (zero) tbm, já q é texto. Mas o certo seria que o campo preco fosse do tipo Float. Quais são os valores que a consulta está trazendo que não deveriam? Ok, bem, ele funciona bem se usar a query fazendo a condicional sem o fk_categoria, o problema é quadno acrecento mais uma condição. o resultado que ele traz é em vez de trazer registos entre 0 a 50 ou 100 ele me traz todos que são mais altos ou baixo, é como se ele trouxesse todos os registos Compartilhar este post Link para o post Compartilhar em outros sites
Damon 20 Denunciar post Postado Outubro 28, 2014 o problema é quadno acrecento mais uma condição. o resultado que ele traz é em vez de trazer registos entre 0 a 50 ou 100 ele me traz todos que são mais altos ou baixo, é como se ele trouxesse todos os registos Qual a condição que vc acrescentou? Compartilhar este post Link para o post Compartilhar em outros sites
mbpp 2 Denunciar post Postado Novembro 2, 2014 Peço desculpa pela ausencia, mas tive fora, bem voltando atrás, o erro é bem estranho, no mysql tentei fazer a mesma query e funciona perfeitamente trazendo os registos correctos. SELECT * FROM produtos WHERE fk_formato = '1' AND fk_categoria = '1' AND (preco BETWEEN 0 AND '50.00') Mas quando faço a query a partir do php me trás errado, bem estranho... Não entendo Compartilhar este post Link para o post Compartilhar em outros sites
Electronic 124 Denunciar post Postado Novembro 2, 2014 Dê um echo nesse select pra ver como ele esta fazendo a consulta e o valor das variaveis Compartilhar este post Link para o post Compartilhar em outros sites
mbpp 2 Denunciar post Postado Novembro 2, 2014 Resultado é SELECT * FROM produtos WHERE fk_formato = '1' AND fk_categoria = '1' AND ativo = '1' Estranho, o parametro "valor" deveria passar, não entendi agora...estranho Já sei o que acontece, mas acho estranho, o que acontece é que ele basicamente nos meus if else condicionais ele foi pegar na minha confisão que já continha por exemplo categoria como valor e usava ela, mas na realidade não está certo, o que pretendo é o sistema verifique se nessas condicionais todas existem os GETS que foram pedidos e depois seleciona o correcto, mas pelos vistos ele escolhe logo o primerio que já tiver nele: abaixo deixo um exmeplo if (isset($_REQUEST['pesquisar'])) { //$categoria = $_GET['categori']; if (isset($_GET['pesquisa-livre'])){ $pesquisalivre = $_GET['pesquisa-livre']; $sql= "SELECT * FROM produtos WHERE nome_produto LIKE '%$pesquisalivre%' AND ativo = '1'"; } elseif($_GET['pesquisa-livre'] && $_GET['formato']){ $pesquisalivre = $_GET['pesquisa-livre']; $formato = $_GET['formato']; $sql= "SELECT * FROM produtos WHERE nome_produto LIKE '%$pesquisalivre%' AND fk_formato = '$formato' AND ativo = '1'"; } elseif($_GET['pesquisa-livre'] && $_GET['categoria']){ $pesquisalivre = $_GET['pesquisa-livre']; $categoria = $_GET['categoria']; $sql= "SELECT * FROM produtos WHERE nome_produto LIKE '%$pesquisalivre%' AND fk_categoria = '$categoria' AND ativo = '1'"; } elseif($_GET['pesquisa-livre'] && $_GET['categoria'] && $_GET['formato']){ $pesquisalivre = $_GET['pesquisa-livre']; $categoria = $_GET['categoria']; $formato = $_GET['formato']; $sql= "SELECT * FROM produtos WHERE nome_produto LIKE '%$pesquisalivre%' AND fk_categoria = '$categoria' AND fk_formato = '$formato' AND ativo = '1'"; } elseif($_GET['formato'] && $_GET['categoria']){ $formato = $_GET['formato']; $categoria = $_GET['categoria']; $sql= "SELECT * FROM produtos WHERE fk_formato = '$formato' AND fk_categoria = '$categoria' AND ativo = '1'"; } elseif($_GET['formato']){ $formato = $_GET['formato']; $sql= "SELECT * FROM produtos WHERE fk_formato = '$formato' AND ativo = '1'"; } elseif($_GET['categoria']){ $categoria = $_GET['categoria']; $sql= "SELECT * FROM produtos WHERE fk_categoria = '$categoria' AND ativo = '1'"; } elseif($_GET['valor']){ $valor = $_GET['valor']; //WHERE Price BETWEEN 10 AND 20; $sql= "SELECT * FROM produtos WHERE preco BETWEEN 0 AND '$valor'"; } elseif($_GET['valor'] && $_GET['categoria']){ $valor = $_GET['valor']; $categoria = $_GET['categoria']; //WHERE Price BETWEEN 10 AND 20; $sql= "SELECT * FROM produtos WHERE fk_categoria = '$categoria' AND (preco BETWEEN 0 AND '$valor')"; } elseif($_GET['valor'] && $_GET['formato']){ $valor = $_GET['valor']; $formato = $_GET['formato']; //WHERE Price BETWEEN 10 AND 20; //$sql= "SELECT * FROM produtos WHERE preco BETWEEN 0 AND '$valor' AND fk_formato = '$formato'"; $sql= "SELECT * FROM produtos WHERE fk_formato = '$formato' AND (preco BETWEEN '0' AND '$valor')"; } elseif($_GET['valor'] && $_GET['formato'] && $_GET['categoria']){ $valor = $_GET['valor']; $formato = $_GET['formato']; $categoria = $_GET['categoria']; //WHERE Price BETWEEN 10 AND 20; //SELECT * FROM produtos WHERE fk_formato = '1' AND fk_categoria = '1' AND (preco BETWEEN 0 AND '50.00') $sql= "SELECT * FROM produtos WHERE fk_formato = `$formato` AND fk_categoria = `$categoria` AND preco <=`$valor`)"; //echo "Resultado é ".$sql; } else{ $sql= "SELECT * FROM produtos WHERE ativo = '1'"; } Compartilhar este post Link para o post Compartilhar em outros sites