Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Dae galera, estou fazendo uma consulta no banco só que tenho um problema na hora de pegar apenas de campos preenchidos e ainda tem 2 que são intervalos de datas e valores. Tentei fazer da seguinte maneira, mas daí se eu tento selecionar só os 2 primeiros campos, nenhum registro aparece. Poderiam me dar uma ajuda? Valeu!
$sql = mysql_query("SELECT * FROM veiculos WHERE aprovado = '1' AND categoria LIKE '%".$_POST[categorias]."%' AND marca LIKE '%".$_POST[marca]."%' AND ano >= '%".$_POST[anoinicial]."%' AND ano <= '%".$_POST[anofinal]."%' AND preco >= '%".moeda($_POST[precoinicial])."%' AND preco <= '%".moeda($_POST[precofinal])."%' ORDER BY id_veiculos DESC LIMIT $inicial, $numreg");Já usei between o problema é que sempre preciso preencher todos os campos, se deixo algum em branco não retorna resultados
só concatene na query, caso o campo tiver valor.
exemplo:
http://wbruno.com.br/2011/05/28/formulario-de-busca-filtro-dinamico-em-mysql-php/
Consegui William! Muito obrigado!
if($_POST[marca] > ''){
$sql0 = ' AND marca = "'.$_POST[marca].'" ';
}
if($_POST[categoria] > ''){
$sql1 = ' AND categoria = "'.$_POST[categoria].'" ';
}
if($_POST[anoinicial] > '' && $_POST[anofinal] > ''){
$sql2 = ' AND ano BETWEEN "'.$_POST[anoinicial].'" AND "'.$_POST[anofinal].'" ';
}
if($_POST[valorinicial] > '' && $_POST[valorfinal] > ''){
$sql3 = ' AND preco BETWEEN "'.moeda($_POST[valorinicial]).'" AND "'.moeda($_POST[valorfinal]).'" ';
}
$sql = mysql_query("SELECT * FROM veiculos WHERE aprovado = '1' $sql0 $sql1 $sql2 $sql3 ORDER BY id_veiculos DESC LIMIT $inicial, $numreg");
Acho que você precisa de um BETWEEN...
BETWEEN 'VALOR INICIAL' AND 'VALOR FINAL'
Não sei se é isso, mas pode ser que seja...